问题标签 [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 投票
1 回答
1844 浏览

python - 变量 tf.Variable 在 TensorFlow Probability 中的梯度为“无”

我在 TFP 中构建基本 BNN 时遇到问题。一般来说,我是 TFP 和 BNN 的新手,所以如果我错过了一些简单的事情,我深表歉意。

我可以通过执行以下操作在 Tensorflow 中训练一个基本的 NN:

但是,在尝试使用 tfp DenseFlipout 层实现类似架构时遇到了麻烦:

我收到以下值错误:

我做了一些谷歌搜索,并查看了 TFP 文档,但不知所措,所以我想我会分享这个问题。我错过了什么明显的东西吗?

提前致谢。

0 投票
2 回答
1718 浏览

python - AttributeError:模块“tensorflow.python.ops.linalg.linear_operator_util”没有属性“matmul_with_broadcast”

我正在尝试为 TF-Agents 创建我自己的 PyEnvironment。但是,此错误不断出现:

AttributeError:模块“tensorflow.python.ops.linalg.linear_operator_util”没有属性“matmul_with_broadcast”

我发现这似乎是一个问题tensorflow-probability,但我已经安装了https://github.com/tensorflow/agents/issues/91tensorflow-probability=0.7.0推荐 的版本

我试过重新安装和更新

tensorflow-gpu=2.0.0-beta1 tf-agents-nightly tensorflow-probability=0.7.0

这是一个最小的代码示例:

这是运行此最小示例时的完整错误消息:

0 投票
3 回答
501 浏览

python - 概率质量函数总和 2 掷骰子?

试图为 2 个骰子总和绘制 pmf,但会出现一些尾部正确的问题。

我曾尝试使用 numpy 和其他 python 库,但问题仍然存在:

输出图

0 投票
1 回答
450 浏览

python - 如何将 sts.LinearRegression 替换为 Tensorflow 概率结构化时间序列模型组件的非线性模型

我正在创建一个具有外部可控特征的时间序列预测模型,类似于https://medium.com/tensorflow/structural-time-series-modeling-in-tensorflow-probability中的“预测电力需求”示例-344edac24083。为了模拟外部因素的影响,我使用 sts.LinearRegression() 作为我模型的一个组件,但是这些外部因素本质上是非常非线性的,它会在我的模型中导致不需要的负面预测。

我尝试在 TFP STS 之外创建(更简单的)预测,并发现 RandomForestRegressor 对于这些外部特征的线性回归效果要好得多。我想做的是用 sts.RandomForestRegressor() 替换 sts.LinearRegression(),但这在 sts 库中不可用。事实上,sts 库中几乎没有任何可用选项:https ://www.tensorflow.org/probability/api_docs/python/tfp/sts/LinearRegression

我也尝试将我的目标变量转换为日志形式,但是有许多零实例(对于日志是 inf),结果证明这不是一个有用的转换。

我的 TFP STS 模型架构如下所示:

def build_model(observed_time_series):

我想将模型的“marketing_effect”组件更改为非线性的。

我在这里唯一的选择是克隆 TFP STS 库并创建一个自定义函数来处理带有随机森林回归器之类的非线性数据吗?有谁知道更好的选择?

0 投票
1 回答
67 浏览

tensorflow-probability - 在张量流中,是否有一个普通的“密集”双射器?

例如,考虑一堆层“传统的 keras 模型”。可能会先验权重,先验数据输入或输出。如果 Dense 网络是一个双射器,那么很多东西都会被神奇地处理。看起来仿射层和其他一些层将允许手动构建它。有 DenseVariational 但它使用替代后验。

0 投票
2 回答
440 浏览

python - 如何在张量流概率中绑定差分进化最小化的输入维度?

scipy 的差分进化 (DE) 实现不同,没有直接的方法来定义我在tensorflow-probability中的输入的界限。

由于我的函数的输入是定义图像中像素的 5 元组 (x,y,R,G,B),因此这些值需要是整数并限制到我的图像尺寸以及 0 到 255 的 RGB 值在优化过程中。

为了描绘更大的图景:我想最小化图像分类器的置信度,它本身是强化学习代理的一部分,需要根据对环境的观察来决定一个动作。该代理经过全面培训,但现在我想通过在其观察中扰乱单个像素来扔几块石头并监控其性能。

我想使用差分进化算法来找到最会降低代理对其行为的信心的像素。

目前我有一个动作预测函数,它将扰动像素作为参数,通过分类器运行扰动观察,并返回代理在没有扰动的情况下选择的动作的结果置信度:

代码块 I

现在我想将此函数提供给具有初始种群的优化器:

代码块 II

然而,我如何定义我的输入范围,这样人口将始终是有效像素?

我在GitHub 上询问了这个问题,实现这一点的一种可能方法是使用他们的双射器功能:

代码块 III

虽然我原则上理解这种方法,但我无法将其应用于我目前的情况/对我的问题的理解。

编辑:删除了与主要问题无关的信息。始终注意您的类型和尺寸!

0 投票
0 回答
429 浏览

python - 在 TensorFlow 2.0 中的层之间共享权重

我试图确定在使用 Tensorflow 2.0 时如何在特定类型层的多个副本之间共享权重,例如堆叠在顺序 Keras 模型中

具体从TensorFlow概率一个tfp.layers.VariationalGaussianProcess层。它的一个输入是 a kernel_provider(您通过对 Keras 层进行子类化来制作)。

我想做的是使用tfp.positive_semidefinite_kernels.MaternOneHalf具有振幅和length_scale权重的内核。然后对于模型中的所有层,在所有这些层之间共享VariationalGaussianProcess幅度和权重。length_scale

0 投票
1 回答
142 浏览

python-3.x - 为大型数据集创建 HMC 的自定义梯度函数

我试图在张量流概率中使用 HMC 推断高斯过程的参数。

我有多个从同一底层进程生成的独立数据序列,我想推断它们都共享的内核参数。

为了计算我正在使用急切模式并遍历每个独立序列的可能性。我能够计算可能性,但是在尝试计算梯度时遇到了资源耗尽错误。

我知道这会很慢,但我希望能够将 HMC 与任何大小的数据集一起使用而不会耗尽内存。

我使用以下代码创建合成数据,这会从具有 p 个数据点的 GP 创建 N 个样本。

以下用于计算对数似然度的代码将使用采样器运行小 N 值,但会因 N 值较大(资源耗尽)而失败。尝试计算似然梯度时会发生错误。

但是我可以在循环内使用梯度带计算大 N 的梯度。此代码对任何 N 运行并返回正确的似然性和梯度:

如果我然后把它变成一个 customgradient 它再次失败:

我的问题是如何gradsjoint_log_prob上面的函数(我知道可以为任何大型数据集计算)到 HMC 采样器?似乎如果整个函数都包含在 gradienttape 调用中,那么for循环就会展开并且内存不足 - 但有没有办法解决这个问题?

0 投票
1 回答
74 浏览

tensorflow-probability - TransformedTransitionKernel 无法在 sample_chain 中应用逆双射器

我正在尝试为一些时间序列数据运行一个相当简单的 MCMC 示例。我相信我包含了所有必需的参数,但我仍然遇到错误。

库版本:

我尝试回滚到 tfp 0.6.0 并出现matmul错误。我尝试每晚推进到 tf 并得到与以下相同的错误。

编码

这将返回一个错误。

0 投票
1 回答
297 浏览

tensorflow - 如何对中间层特征强制执行概率分布?

我有一个 CNN-LSTM 架构。现在,我想对中间层的特征实施概率分布,比如混合正态分布。我怎样才能在 Keras 中做到这一点?

我看到了 keras 的 MDN 实现(https://github.com/cpmpercussion/keras-mdn-layer)。但这要求它应该用作网络的最后一层。另外,我查看了 tensorflow_probability,但我不确定是否可以为此使用 tensorflow_probability 层。

当我尝试上面的代码时,它给了我一个错误如下: