问题标签 [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 回答
351 浏览

tensorflow2.0 - Tensorflow 2.0 中的高斯过程回归导致没有梯度?

以下代码基本上来自文档,稍作转换以在 tensorflow 2.0 中运行。渐变全部为无。我不确定这是一个错误还是我缺少的东西:

(更正的代码)

更新:

以下示例现在有效。我想知道在 tf 2.0 中组织这个流程是否有更好的模式?

0 投票
2 回答
1155 浏览

tensorflow - 如何将 Keras 模型拟合到 Gamma 分布?

我正在尝试拟合一个输出变量始终为正的 keras 模型。我想使用伽马分布来模拟这个问题。问题是损失总是输出 NAN。

我构建了以下 keras 模型:

请注意,我使用了 softplus,因为分布的两个参数都必须是正数。我还添加了 0.001 以确保参数始终大于零。

我的损失函数如下:

这个功能似乎工作正常。例如,如果我运行以下代码,它运行良好:

但是,如果我使用以下行编译它:

损失总是输出 nan

我究竟做错了什么?我尝试了不同的损失函数,但似乎没有任何效果。我认为这与集中论点有关,因为我已经有一个与正态分布类似的模型。在那个模型中,我没有使用 softplus 作为平均值(loc),因为该分布接受任何正值或负值。我使用了标准偏差的确切结构,因为它在正态分布中也必须是正的。它工作得很好。为什么它不适用于 Gamma 分布?

感谢您向任何可以帮助我了解我做错了什么的人提供建议。

0 投票
2 回答
791 浏览

tensorflow - 贝叶斯模型不使用 tensorflow 概率和 keras 进行学习

我想估计我的模型的认知不确定性。所以我将所有层转换为张量流概率层。该模型没有返回错误,但它也没有学到任何东西。该模型有两个输出,两个输出的损失根本没有变化。另一方面,模型的整体损失在缩小,但似乎与其他损失完全无关,我无法解释。

损失函数定义如下:

任何帮助,将不胜感激。总损失从 45000 开始,而两个输出损失在 1.3 左右。这对我来说很奇怪。

0 投票
0 回答
317 浏览

python - TensorFlow Probability、Edward2 和 Python 上的离散贝叶斯网络

我有一个简单的贝叶斯网络:

随机变量“state”、“signal_1”和“signal_2”具有相应的离散值:Val(state) = {0, 1, 2, 3}, Val(signal_1) = {0, 1} 和 Val(signal_2 ) = {0, 1}。

我有边际概率分布 P(state) 和条件概率分布 P(signal_1|state) 和 P(signal_2|state) 作为表格。

联合概率 P(state, signal_1, signal_2) 等于 P(state) * P(signal_1|state) * P(signal_2|state) 和 log P(state, signal_1, signal_2) = log P(state) + log P (signal_1|state) + log P(signal_2|state)。

我正在尝试在 TensorFlow Probability 中构建此模型:

变体 1:

我的证据是,例如,“signal_1 = 1”和“signal_2 = 0”,我想得到“state = 0”的概率,即 P(state=0|signal_1=1, signal_2=0)

我定义函数:

通过 Edward2 的变体 2:

然后我得到联合对数概率函数

可以通过 lambda 表达式使用:

我是否正确定义了模型?

问题是我如何继续使用 MCMC?我可以对这个离散模型使用哪种 MCMC 方法?有人可以为我的模型显示 MCMC 代码吗?如何告诉 MCMC 算法仅从集合 {0、1、2、3} 中抽取“状态”样本?

谢谢!

0 投票
1 回答
236 浏览

python - 使 tfp.sts.fit_with_hmc 更快

这是可能尝试学习如何使用 Tensorflow Probability 的一部分

我已经加载了代表每小时电能消耗的 1368 个值的时间序列。

我会使用季节性/自回归模型来生成一些预测。

此时以下代码可以工作,但执行速度很慢。这是可以预料的吗?我可以做些不同的事情来让它更快吗?

如果有人想尝试这些就是观察结果

0 投票
1 回答
217 浏览

tensorflow - TensorFlow Probability 中批量混合分布的概率

TFP 分发应该能够开箱即用地进行批处理。但是,我面临批量混合分布的问题。这是一个玩具示例(使用急切执行):

基本上,它只是对默认示例的支持:https ://www.tensorflow.org/probability/api_docs/python/tfp/distributions/Mixture

采样工作正常,但此分布的概率返回错误: InvalidArgumentError: cannot compute Add as input #1(zero-based) was expected to be a double tensor but is a float tensor [Op:Add] name: Mixture/prob/add/

任何猜测,我做错了什么?

PS。批量高斯分布的相同示例可以正常工作。

0 投票
2 回答
833 浏览

tensorflow - 在 Keras 顺序模块中保存和加载 TensorFlow 概率层

我在 Keras 序列中使用 Tensorflow 概率层。但是,将模型保存为 json 然后加载它会引发异常。我正在使用custom_objects能够加载自定义图层。这是重现错误的简约代码。

我得到以下异常:

0 投票
1 回答
67 浏览

python - 用于简单多元伯努利推理的多链绘制

我想对具有多个链的多元伯努利(维度 D)进行简单推断。下面的代码可以正常工作并正确推断出唯一链的参数值。我怀疑我错误地定义了我的模型。我没有找到任何简单的伯努利推理的简单例子。

返回的错误是: ValueError: Dimension must be 3 but is 2 for 'mcmc_sample_chain/simple_step_size_adaptation___init__/_bootstrap_results/mh_bootstrap_results/hmc_kernel_bootstrap_results/maybe_call_fn_and_grads/value_and_gradients/mcmc_sample_chain_simple_step_size_adaptation___init____bootstrap_results_mh_bootstrap_results_hmc_kernel_bootstrap_results_maybe_call_fn_and_grads_value_and_gradients_Samplemcmc_sample_chain_simple_step_size_adaptation___init____bootstrap_results_mh_bootstrap_results_hmc_kernel_bootstrap_results_maybe_call_fn_and_grads_value_and_gradients_Independentmcmc_sample_chain_simple_step_size_adaptation___init____bootstrap_results_mh_bootstrap_results_hmc_kernel_bootstrap_results_maybe_call_fn_and_grads_value_and_gradients_Bernoulli/log_prob/transpose' (op: 'Transpose') with input shapes: [1,5000,2], [2].

这是一个简单的例子,D=2 和 N = 5000(训练集中的样本数)。

如果我们将 current_state 替换为current_state=tf.ones([2])/10(并因此删除了独立的链式采样),则代码可以完美运行。

我有几个问题,我将非常感谢任何帮助: + 我的模型是否正确实施?+ 有没有办法在 tf 中调试这种类型的错误?python 调试器没有多大帮助。

提前致谢 !

0 投票
1 回答
329 浏览

tensorflow - 使用 Tensorflow 分布进行损失的 Keras 模型在批量大小 > 1 时失败

我正在尝试使用来自 tensorflow_probability 的分布在 Keras 中定义自定义损失函数。更具体地说,我正在尝试建立一个混合密度网络。
当 batch_size = 1 时,我的模型在玩具数据集上工作(它学会预测正确的混合分布以y使用x)。但是当 batch_size > 1 时它“失败”(它预测 all 的相同分布y,忽略x)。这让我觉得我的问题与 batch_shape 与 sample_shape 有关。

重现:

我怀疑问题出在接下来的 3 个函数中:

提前致谢!

更新

在这个答案的指导下,我找到了两种解决问题的方法。两种解决方案都指向 Keras 笨拙地广播 y 以匹配 y_pred 的事实:

0 投票
1 回答
1016 浏览

python - 使用多元正态分布与 Tensorflow-probability.layers 的混合

我正在尝试使用张量流概率层来创建多元正态分布的混合。当我为此使用 IndependentNormal 层时,它工作正常,但是当我使用 MultivariateNormalTriL 层时,我遇到了 event_shape 的问题。我将这些层与 MixtureSameFamily 层结合起来。以下代码应该很好地说明了我的问题,并且应该在 google colab 中工作:

尽管 MultivariateNormalTriL 和 IndependentNormal 具有相同的 batch_shape 和 event_shape,但将它们与 MixtureSameFamily 组合会导致不同的事件形状。

所以我的问题是:为什么它们会导致不同的事件形状,以及如何为具有不同(不一定是对角)协方差矩阵和 event_shape=[100] 的多元正态分布混合获得一个层?

编辑:张量流概率版本 0.8 也是如此