问题标签 [tensorflow-probability]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用 Tensorflow 概率进行非线性优化
我正在尝试使用 TensorFlow-probability 的 Nelder-Mead 优化器实现高斯拟合:tfp.optimizer.nelder_mead_minimize()
. 它不会收敛,但scipy.optimizer.minimize()
在不到 1 秒的计算时间内提供了良好的结果。我可能做错了什么,但我不知道是什么?有人可以帮我吗?
我在用 :
这是我的代码:
优化停止大约 50 次迭代并返回:
我使用minimize()
from scipy.optimize
with'Nelder-Mead'
方法运行了同样的问题,它给出了:
我希望使用 tensorflow-probability 的 Nelder-Mead 优化器和 Scipy.optimize 的 Nelder-mead 优化器具有相同的性能。
我究竟做错了什么 ?
编辑: 在损失函数的定义中发现错误。以下代码现在正在收敛:
python - 具有多项观测分布的 HMM
我正在用 TensorFlow 概率中的多项观察编写一个简单的 HMM,但我无法正确获得最可能的隐藏状态序列。posterior_mode
无论模型如何,始终返回第一个状态(状态 0)。
下面的代码用一个简单的案例说明了我的意思:
但是这段代码返回:
考虑到先验、转换和观察分布,这对于这个简单的例子是不可能的。对于最可能的隐藏状态,分布的其他值返回相同的输出。
我在这里遗漏了什么还是 TF 概率有问题?
keras - 为什么在这种情况下使用 GradientTape 计算的梯度是错误的(使用 tfp.vi.monte_carlo_variational_loss)
的梯度tf.GradientTape
似乎与我试图最小化的函数中的正确最小值不匹配。
我正在尝试使用 tensorflowprobability 的黑盒变分推理(使用 tf2)和tf.GradientTape
keras 优化器调用该apply_gradients
函数。替代后验是一个简单的一维法线。我正在尝试逼近一对法线,请参阅 pdist 函数。为简单起见,我只是尝试优化比例参数。
当前代码:
输出(显示每 10 次迭代):
出于某种原因,渐变不反映真实的渐变,它应该在 scale=2.74 附近大约为零。
为什么梯度与实际的 elbo_loss 无关?
python - 在以张量流概率层结尾的网络上使用生成器
我有一个以概率层结尾的网络,如下所示:
我正在从生成器创建我的数据集:
我能够拟合模型,fit_generator
但我怎样才能对预测做同样的事情?(我试过了predict_generator
,但没有成功)
此外,如果X
是一个 numpy 数组,我可以做model(X).sample(100)
我想对我的生成器做同样的事情,比如model(data_generator).sample(100)
. 任何想法?
python - TypeError:函数构建代码之外的操作正在传递一个图张量
我收到以下异常
这也引发了以下异常
运行以下代码时
该问题显然与图层有关tfp.layers.Convolution2DFlipout
。为什么我会得到这些异常?这是由于我的代码中的逻辑错误还是可能是 TensorFlow 或 TensorFlow Probability 中的错误?这些错误是什么意思?我该如何解决它们?
我正在使用 TensorFlow 2.0.0(默认情况下急切执行)。和 TensorFlow Probability 0.8.0 和 Python 3.7.4。我也在这里和这里打开了相关问题。
请不要建议我使用 TensorFlow 1,懒惰地执行我的代码(也就是说,tf.compat.v1.disable_eager_execution()
在导入 TensorFlow 后使用,因为我知道这将使上面的代码运行而不会出现上述异常)或显式创建会话或占位符。
python - 如何在张量流概率中运行线性回归,其中参数遵循不同的分布
我有以下示例数据框:
如何y_var
使用stensorflow_probability
的权重x_c
遵循normal
分布和 s 的权重x_p
遵循分布的位置进行简单的线性回归lognormal
?
更新
因此,例如,如果我尝试这个来构建模型:
然后这将创建 4 层,最后所有参数都将遵循对数正态,而我只希望x_p
s 权重遵循lognormal
python - 高斯过程中“张量不可散列”的张量流概率错误
我试图获得一个在张量流概率中工作的最小高斯过程示例。在我尝试定义对数边际可能性之前,我可以让一切正常工作。在这个阶段,我得到了TypeError: Tensor is unhashable if Tensor equality is enabled. Instead, use tensor.experimental_ref() as the key.
我尝试重塑 x 和 y 数组的错误,但这似乎不是问题。当我尝试遵循谷歌高斯过程回归 colab 时,我也遇到了这个错误。谁能给我一些关于我做错了什么的指示?下面是一个最小的例子。
在我的电脑上,版本是tensorflow=2.0.0
, tensorflow-probability=0.7.0
, numpy=1.17.2
.
python - 如何在 TensorFlow 中获取日志概率?
我正在尝试将 pytorch 脚本转换为 tensorflow,我需要从分类分布中获取日志概率。但是即使使用相同的种子,tensorflow 计算的对数概率也与 pytorch 的对数概率不同。这是我到目前为止所做的
tensorflow - 关于 TensorFlow Probability 的 ELBO 损失中的 KL 项的多个问题
我一直在尝试使用 TensorFlow Probability (TFP) 进行一些实验,但遇到了一些问题。
KL损失系数的正确值是多少?
在 Blundell (2015) 的论文中,系数设置为
1/M
(其中M
是小批量的数量)。在 TFP 给出的示例中,系数为1/mnist_data.train.num_examples
。为什么?当我从 2d 输入到 3d 图像体积时,KL 损失(~1k)仍然明显大于交叉熵(~1),即使在除以
mnist_data.train.num_examples
. 为什么?获得该系数的适当值的指导方针是什么?也许像两个损失项应该是相同的数量级?
当前系数只考虑训练样本的数量,而不考虑网络复杂度或网络中参数的数量,我假设 KL 损失会随着模型的复杂度而增加。
我正在尝试实现一个具有 KL 损失的神经网络,而不使用
keras.model.losses
,作为一些软件生产和硬件支持限制。我正在尝试使用 TF 1.10 和 TFP 0.3.0 训练我的模型,问题是 fortf<=1.14
,tf.keras.model
不支持tf.layers
Keras 模型,所以我不能立即使用我的原始模型。有没有办法获得 KL 损失,而不是来自model.losses
TF 构造中的网络,而是来自网络的层或权重?批归一化或组归一化在贝叶斯深度学习中仍然有用吗?
tensorflow - 梯度可以流过(Tensorflow)tf.distributions.Normal sample()吗?
我想在TensorFlow
.
我已经检查了源代码,但想确认渐变
DO流过变量x,其中x = "normal".sample()。
原因是该函数sample()
利用了重新参数化
技巧 *x = 平均值 + sigma * 噪声 (0,1)*
.
我的理解正确吗?