- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我遵循本教程的第三个示例的逻辑 GaussianProcessRegressionModel 。但是,我的设置的差异之一是我的振幅和长度比例是矢量。但是,我很难为矢量化参数设置双射器。
我尝试了官方示例教程中的一种方法(click here 并搜索关键字“Batching Bijectors”)。
他们使用
softplus = tfp.bijectors.Softplus(
hinge_softness=[1., .5, .1])
print("Hinge softness shape:", softplus.hinge_softness.shape)
更改标量参数的 Softplus 形状。但控制台一直显示相同的错误消息。
我的compute_joint_log_prob_3
只是输出给定所有数据和参数的标量对数后验概率。而且我测试过这个功能运行良好。唯一的问题是在存在矢量化内核超参数的情况下设置 unconstrained_bijectors
。
# Create a list to save all variables to be iterated.
initial_chain_states = [
tf.ones([1, num_GPs], dtype=tf.float32, name="init_amp_1"),
tf.ones([1, num_GPs], dtype=tf.float32, name="init_scale_1"),
tf.ones([1, num_GPs], dtype=tf.float32, name="init_amp_0"),
tf.ones([1, num_GPs], dtype=tf.float32, name="init_scale_0"),
tf.ones([], dtype=tf.float32, name="init_sigma_sq_1"),
tf.ones([], dtype=tf.float32, name="init_sigma_sq_0")
]
vectorized_sp = tfb.Softplus(hinge_softness=np.ones([1, num_GPs], dtype=np.float32))
unconstrained_bijectors = [
vectorized_sp,
vectorized_sp,
vectorized_sp,
vectorized_sp,
tfp.bijectors.Softplus(),
tfp.bijectors.Softplus()
]
def un_normalized_log_posterior(amplitude_1, length_scale_1,
amplitude_0, length_scale_0,
noise_var_1, noise_var_0):
return compute_joint_log_prob_3(
para_index, delayed_signal, y_type,
amplitude_1, length_scale_1, amplitude_0, length_scale_0,
noise_var_1, noise_var_0
)
num_results = 200
[
amps_1,
scales_1,
amps_0,
scales_0,
sigma_sqs_1,
sigma_sqs_0
], kernel_results = tfp.mcmc.sample_chain(
num_results=num_results,
num_burnin_steps=250,
num_steps_between_results=3,
current_state=initial_chain_states,
kernel=tfp.mcmc.TransformedTransitionKernel(
inner_kernel=tfp.mcmc.HamiltonianMonteCarlo(
target_log_prob_fn=un_normalized_log_posterior,
step_size=np.float32(0.1),
num_leapfrog_steps=3,
step_size_update_fn=tfp.mcmc.make_simple_step_size_update_policy(
num_adaptation_steps=100)),
bijector=unconstrained_bijectors))
它应该可以工作,并且模型将抽取该参数的样本。相反,我收到了一堆错误消息说
Traceback (most recent call last):
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 1659, in _create_c_op
c_op = c_api.TF_FinishOperation(op_desc)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Requires start <= limit when delta > 0: 1/0 for 'mcmc_sample_chain/transformed_kernel_bootstrap_results/mh_bootstrap_results/hmc_kernel_bootstrap_results/maybe_call_fn_and_grads/value_and_gradients/softplus_10/forward_log_det_jacobian/range' (op: 'Range') with input shapes: [], [], [] and with computed input tensors: input[0] = <1>, input[1] = <0>, input[2] = <1>.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/runpy.py", line 183, in _run_module_as_main
mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/runpy.py", line 109, in _get_module_details
__import__(pkg_name)
File "/MMAR_q/MMAR_q.py", line 237, in <module>
bijector=unconstrained_bijectors))
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/mcmc/sample.py", line 235, in sample_chain
previous_kernel_results = kernel.bootstrap_results(current_state)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/mcmc/transformed_kernel.py", line 344, in bootstrap_results
transformed_init_state))
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/mcmc/hmc.py", line 518, in bootstrap_results
kernel_results = self._impl.bootstrap_results(init_state)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/mcmc/metropolis_hastings.py", line 264, in bootstrap_results
pkr = self.inner_kernel.bootstrap_results(init_state)
File "/MAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/mcmc/hmc.py", line 687, in bootstrap_results
] = mcmc_util.maybe_call_fn_and_grads(self.target_log_prob_fn, init_state)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/mcmc/util.py", line 237, in maybe_call_fn_and_grads
result, grads = _value_and_gradients(fn, fn_arg_list, result, grads)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/mcmc/util.py", line 185, in _value_and_gradients
result = fn(*fn_arg_list)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/mcmc/transformed_kernel.py", line 204, in new_target_log_prob
event_ndims=event_ndims)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/mcmc/transformed_kernel.py", line 51, in fn
for b, e, sp in zip(bijector, event_ndims, transformed_state_parts)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/mcmc/transformed_kernel.py", line 51, in <listcomp>
for b, e, sp in zip(bijector, event_ndims, transformed_state_parts)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/bijectors/bijector.py", line 1205, in forward_log_det_jacobian
return self._call_forward_log_det_jacobian(x, event_ndims, name)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/bijectors/bijector.py", line 1177, in _call_forward_log_det_jacobian
kwargs=kwargs)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/bijectors/bijector.py", line 982, in _compute_inverse_log_det_jacobian_with_caching
event_ndims)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/bijectors/bijector.py", line 1272, in _reduce_jacobian_det_over_event
axis=self._get_event_reduce_dims(min_event_ndims, event_ndims))
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow_probability/python/bijectors/bijector.py", line 1284, in _get_event_reduce_dims
return tf.range(-reduce_ndims, 0)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow/python/ops/math_ops.py", line 1199, in range
return gen_math_ops._range(start, limit, delta, name=name)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow/python/ops/gen_math_ops.py", line 6746, in _range
"Range", start=start, limit=limit, delta=delta, name=name)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py", line 788, in _apply_op_helper
op_def=op_def)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow/python/util/deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 3300, in create_op
op_def=op_def)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 1823, in __init__
control_input_ops)
File "/MMAR_q/venv/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 1662, in _create_c_op
raise ValueError(str(e))
ValueError: Requires start <= limit when delta > 0: 1/0 for 'mcmc_sample_chain/transformed_kernel_bootstrap_results/mh_bootstrap_results/hmc_kernel_bootstrap_results/maybe_call_fn_and_grads/value_and_gradients/softplus_10/forward_log_det_jacobian/range' (op: 'Range') with input shapes: [], [], [] and with computed input tensors: input[0] = <1>, input[1] = <0>, input[2] = <1>.
我不知道这些输入形状到底意味着什么。感谢您的时间和解释。
--------我是人工分隔线------
与Brian讨论后,我知道自己错在哪里了。该错误消息可能意味着 compute_joint_log_prob_3
的结果不是标量而是其他形状。
正如 Brian 昨天所说,Softplus()
能够根据其输入的张量自动广播。如果我想改变它的柔软度,那么我可以修改hinge_softness=...
。
而我在阅读了tutorial on tensorflow distribution shape后也有了更深刻的理解。 .
再次感谢您的澄清...在我知道自己错在哪里之后,这是多么美好的一天...
最佳答案
如果您只想使用铰链软度为 1 的相同 softplus,双射器将广播,您可以编写:
vectorized_sp = tfb.Softplus(hinge_softness=np.float32(1))
另请注意,默认值为 1,因此更简单:vectorized_sp = tfb.Softplus()
另外,我建议查看 SimpleStepSizeAdaptation
内核(目前可能仅位于 pip install tfp-nightly
中)。
我认为您看到的实际异常可能是由双射器参数形状与您的潜在状态形状以某种方式冲突引起的。转换后的转换内核需要减少双射器指定的事件维度上的 log_prob。每个潜在变量的 event_ndims
是使用从 target_log_prob_fn
返回的 log_prob 的排名作为目标批处理排名得出的,即尾随事件维度将通过双射器减少。
你能多说一下你想要做什么吗?看起来您正在尝试在一堆 GP 内核 hparam 上运行单条 MCMC 链。如果不了解 compute_joint_log_prob_3
的内部结构,就很难提供太多帮助。
关于python - 如何在 TensorFlow 中设置矢量化参数的双射器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55837588/
我想将模型及其各自训练的权重从 tensorflow.js 转换为标准 tensorflow,但无法弄清楚如何做到这一点,tensorflow.js 的文档对此没有任何说明 我有一个 manifest
我有一个运行良好的 TF 模型,它是用 Python 和 TFlearn 构建的。有没有办法在另一个系统上运行这个模型而不安装 Tensorflow?它已经经过预训练,所以我只需要通过它运行数据。 我
当执行 tensorflow_model_server 二进制文件时,它需要一个模型名称命令行参数,model_name。 如何在训练期间指定模型名称,以便在运行 tensorflow_model_s
我一直在 R 中使用标准包进行生存分析。我知道如何在 TensorFlow 中处理分类问题,例如逻辑回归,但我很难将其映射到生存分析问题。在某种程度上,您有两个输出向量而不是一个输出向量(time_t
Torch7 has a library for generating Gaussian Kernels在一个固定的支持。 Tensorflow 中有什么可比的吗?我看到 these distribu
在Keras中我们可以简单的添加回调,如下所示: self.model.fit(X_train,y_train,callbacks=[Custom_callback]) 回调在doc中定义,但我找不到
我正在寻找一种在 tensorflow 中有条件打印节点的方法,使用下面的示例代码行,其中每 10 个循环计数,它应该在控制台中打印一些东西。但这对我不起作用。谁能建议? 谢谢,哈米德雷萨, epsi
我想使用 tensorflow object detection API 创建我自己的 .tfrecord 文件,并将它们用于训练。该记录将是原始数据集的子集,因此模型将仅检测特定类别。我不明白也无法
我在 TensorFlow 中训练了一个聊天机器人,想保存模型以便使用 TensorFlow.js 将其部署到 Web。我有以下内容 checkpoint = "./chatbot_weights.c
我最近开始学习 Tensorflow,特别是我想使用卷积神经网络进行图像分类。我一直在看官方仓库中的android demo,特别是这个例子:https://github.com/tensorflow
我目前正在研究单图像超分辨率,并且我设法卡住了现有的检查点文件并将其转换为 tensorflow lite。但是,使用 .tflite 文件执行推理时,对一张图像进行上采样所需的时间至少是使用 .ck
我注意到 tensorflow 的 api 中已经有批量标准化函数。我不明白的一件事是如何更改训练和测试之间的程序? 批量归一化在测试和训练期间的作用不同。具体来说,在训练期间使用固定的均值和方差。
我创建了一个模型,该模型将 Mobilenet V2 应用于 Google colab 中的卷积基础层。然后我使用这个命令转换它: path_to_h5 = working_dir + '/Tenso
代码取自:- http://adventuresinmachinelearning.com/python-tensorflow-tutorial/ import tensorflow as tf fr
好了,所以我准备在Tensorflow中运行 tf.nn.softmax_cross_entropy_with_logits() 函数。 据我了解,“logit”应该是概率的张量,每个对应于某个像素的
tensorflow 服务构建依赖于大型 tensorflow ;但我已经成功构建了 tensorflow。所以我想用它。我做这些事情:我更改了 tensorflow 服务 WORKSPACE(org
Tensoflow 嵌入层 ( https://www.tensorflow.org/api_docs/python/tf/keras/layers/Embedding ) 易于使用, 并且有大量的文
我正在尝试使用非常大的数据集(比我的内存大得多)训练 Tensorflow 模型。 为了充分利用所有可用的训练数据,我正在考虑将它们分成几个小的“分片”,并一次在一个分片上进行训练。 经过一番研究,我
根据 Sutton 的书 - Reinforcement Learning: An Introduction,网络权重的更新方程为: 其中 et 是资格轨迹。 这类似于带有额外 et 的梯度下降更新。
如何根据条件选择执行图表的一部分? 我的网络有一部分只有在 feed_dict 中提供占位符值时才会执行.如果未提供该值,则采用备用路径。我该如何使用 tensorflow 来实现它? 以下是我的代码
我是一名优秀的程序员,十分优秀!