问题标签 [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.

0 投票
0 回答
787 浏览

python - 使用 Tensorflow 概率进行非线性优化

我正在尝试使用 TensorFlow-probability 的 Nelder-Mead 优化器实现高斯拟合:tfp.optimizer.nelder_mead_minimize(). 它不会收敛,但scipy.optimizer.minimize()在不到 1 秒的计算时间内提供了良好的结果。我可能做错了什么,但我不知道是什么?有人可以帮我吗?

我在用 :

这是我的代码:

优化停止大约 50 次迭代并返回:

我使用minimize()from scipy.optimizewith'Nelder-Mead'方法运行了同样的问题,它给出了:

我希望使用 tensorflow-probability 的 Nelder-Mead 优化器和 Scipy.optimize 的 Nelder-mead 优化器具有相同的性能。

我究竟做错了什么 ?

编辑: 在损失函数的定义中发现错误。以下代码现在正在收敛:

0 投票
0 回答
145 浏览

python - 具有多项观测分布的 HMM

我正在用 TensorFlow 概率中的多项观察编写一个简单的 HMM,但我无法正确获得最可能的隐藏状态序列。posterior_mode无论模型如何,始终返回第一个状态(状态 0)。

下面的代码用一个简单的案例说明了我的意思:

但是这段代码返回:

考虑到先验、转换和观察分布,这对于这个简单的例子是不可能的。对于最可能的隐藏状态,分布的其他值返回相同的输出。

我在这里遗漏了什么还是 TF 概率有问题?

0 投票
1 回答
215 浏览

keras - 为什么在这种情况下使用 GradientTape 计算的梯度是错误的(使用 tfp.vi.monte_carlo_variational_loss)

的梯度tf.GradientTape似乎与我试图最小化的函数中的正确最小值不匹配。

我正在尝试使用 tensorflowprobability 的黑盒变分推理(使用 tf2)和tf.GradientTapekeras 优化器调用该apply_gradients函数。替代后验是一个简单的一维法线。我正在尝试逼近一对法线,请参阅 pdist 函数。为简单起见,我只是尝试优化比例参数。

当前代码:

输出(显示每 10 次迭代):

出于某种原因,渐变不反映真实的渐变,它应该在 scale=2.74 附近大约为零。

为什么梯度与实际的 elbo_loss 无关?

0 投票
1 回答
64 浏览

python - 在以张量流概率层结尾的网络上使用生成器

我有一个以概率层结尾的网络,如下所示:

我正在从生成器创建我的数据集:

我能够拟合模型,fit_generator但我怎样才能对预测做同样的事情?(我试过了predict_generator,但没有成功)

此外,如果X是一个 numpy 数组,我可以做model(X).sample(100)我想对我的生成器做同样的事情,比如model(data_generator).sample(100). 任何想法?

0 投票
1 回答
9604 浏览

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 后使用,因为我知道这将使上面的代码运行而不会出现上述异常)或显式创建会话或占位符。

0 投票
0 回答
197 浏览

python - 如何在张量流概率中运行线性回归,其中参数遵循不同的分布

我有以下示例数据框:

如何y_var使用stensorflow_probability的权重x_c遵循normal分布和 s 的权重x_p遵循分布的位置进行简单的线性回归lognormal

更新

因此,例如,如果我尝试这个来构建模型:

然后这将创建 4 层,最后所有参数都将遵循对数正态,而我只希望x_ps 权重遵循lognormal

0 投票
1 回答
823 浏览

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.

0 投票
1 回答
1593 浏览

python - 如何在 TensorFlow 中获取日志概率?

我正在尝试将 pytorch 脚本转换为 tensorflow,我需要从分类分布中获取日志概率。但是即使使用相同的种子,tensorflow 计算的对数概率也与 pytorch 的对数概率不同。这是我到目前为止所做的

0 投票
1 回答
818 浏览

tensorflow - 关于 TensorFlow Probability 的 ELBO 损失中的 KL 项的多个问题

我一直在尝试使用 TensorFlow Probability (TFP) 进行一些实验,但遇到了一些问题。

  1. KL损失系数的正确值是多少?

    1. 在 Blundell (2015) 的论文中,系数设置为1/M(其中M是小批量的数量)。在 TFP 给出的示例中,系数为1/mnist_data.train.num_examples。为什么?

    2. 当我从 2d 输入到 3d 图像体积时,KL 损失(~1k)仍然明显大于交叉熵(~1),即使在除以mnist_data.train.num_examples. 为什么?

    3. 获得该系数的适当值的指导方针是什么?也许像两个损失项应该是相同的数量级?

    4. 当前系数只考虑训练样本的数量,而不考虑网络复杂度或网络中参数的数量,我假设 KL 损失会随着模型的复杂度而增加。

  2. 我正在尝试实现一个具有 KL 损失的神经网络,而不使用keras.model.losses,作为一些软件生产和硬件支持限制。我正在尝试使用 TF 1.10 和 TFP 0.3.0 训练我的模型,问题是 for tf<=1.14,tf.keras.model不支持tf.layersKeras 模型,所以我不能立即使用我的原始模型。有没有办法获得 KL 损失,而不是来自model.lossesTF 构造中的网络,而是来自网络的层或权重?

  3. 批归一化或组归一化在贝叶斯深度学习中仍然有用吗?

0 投票
0 回答
127 浏览

tensorflow - 梯度可以流过(Tensorflow)tf.distributions.Normal sample()吗?

我想在TensorFlow.
我已经检查了源代码,但想确认渐变

DO流过变量x,其中x = "normal".sample()

原因是该函数sample()利用了重新参数化

技巧 *x = 平均值 + sigma * 噪声 (0,1)*

.

我的理解正确吗?