问题标签 [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 - 当 MultivariateNormalDiag() 的 scale_diag 是常量时,“ValueError:没有为任何变量提供梯度”
下面是一个代码片段,给定 a ,从状态相关分布 ( )state
生成一个。然后根据选择该动作的概率 -1 倍的损失来更新图的权重。在以下示例中,MultivariateNormal 的均值 ( ) 和协方差 ( ) 都是可训练/学习的。action
prob_policy
mu
sigma
但是,当我替换此行时
使用以下行(并注释掉生成 sigma 层并挤压它的行)
我收到以下错误
我不明白为什么会这样。它不应该仍然能够对mu
层中的权重进行梯度吗?为什么使分布的协方差突然变得不可微?
系统详情:
- 张量流 1.13.1
- 张量流概率 0.6.0
- Python 3.6.8
- macOS 10.13.6
tensorflow - tf.random.normal 和 tf.distributions.Normal 有什么区别?
tf.random.normal
和有什么区别tf.distributions.Normal
?tf.distributions.Multinomial
或者和tf.random.multinomial
或类似的东西之间的区别?
tf.distributions.Normal
用作tf.random.normal
后端?
tensorflow-probability - 张量流概率中外行术语中的双射器是什么
我无法理解 Tensorflow 概率中的双射器。如何使用它们。
bayesian-networks - 从带有张量流概率证据的贝叶斯网络采样
有没有一种简单的方法可以从张量流概率的联合分布中“观察”证据和样本?例如,在 PyMC3 中,Distribution
该类observed
在其构造函数中具有参数,因此可以轻松地以证据为条件(并运行 MCMC 以获取后验样本)。
有一些与爱德华有关的文档,但对于简单的情况,我无法弄清楚,例如:
这可能是具有两个二元变量 X 和 Y 的最简单的贝叶斯网络。目标是为 X 或 Y 设置证据并从后验中采样以估计概率。
(显然,可以通过先无条件抽样然后丢弃与证据不一致的样本来使用拒绝抽样,但这会相当低效。)
tensorflow - 如何协调 TFP 与 PyMC3 MCMC 结果?
在尝试 TFP 时,我尝试从共轭正态模型(已知方差)的后验分布中进行采样,即
x|mu ~ 正常(mu, 1.)
mu ~ 正常(4., 2.)
与 pymc3 和解析解相比,tf.mcmc.RandomWalkMetropolis 采样器给出了不同的后验。注意:pymc3 检索正确的后验。
我还尝试了 TFP 中的 HMC 采样器,结果相同(不正确)
我期望 tfp、pymc3 和解析解(pymc3 找到正确的后验)得到相同的结果。
python - 张量流概率中的急切执行在第二次迭代时停止记录梯度
不知何故,我的火车循环中没有渐变。下面是一个简单的例子。
如果我两次运行渐变记录步骤,第二次不会显示任何渐变。返回一个带有None
类型的列表。
如果我们将模型替换m
为“标准”张量流模型,则情况并非如此,即
m = tf.keras.Sequential([tf.keras.layers.Dense(1)])
我正在使用 tensorflow=1.13.1 和 tensorflow-probability=0.6.0
tensorflow - 张量流中具有分类分布的集成网络
我有n
网络,每个网络都有相同的输入/输出。我想根据分类分布随机选择一个输出。Tfp.Categorical只输出整数,我试图做类似的事情
但是rand_out == 0.
总是假的,以及其他条件。
有什么想法可以实现我的需要吗?
python-3.x - 如何计算 tensorflow_probability 输出的分位数和方差?
我测试以下代码:
在“ Custom PSD Kernel ”部分,我得到yhat
了测试数据的预测。
我的目的是对此预测有一个置信区间。如果我想分别用variance
和quantile
方法计算这个预测的方差或分位数,我会得到以下错误:
- NotImplementedError:未实现方差:TransformedDistribution
- NotImplementedError:分位数未实现:独立
因此我的问题是:
如何获得此预测的置信区间?
我需要类似下图的内容[预测的置信区间 (yhat.mean())]:
谢谢你的帮助!
python - 没有名为“tensorflow_probability”的模块
我需要使用 Tensorflow 和 Tensorflow_Probability。通过以下命令安装它后:conda install tensorflow-probability
或pip install --upgrade tensorflow-probability
,我在笔记本中运行它:
但它返回此错误:
结果
如下(相关部分):
谁能帮我解决这个问题(我使用的是 Win 10)?
python - 张量流概率中的重新参数化:tf.GradientTape() 不计算相对于分布均值的梯度
在tensorflow
version2.0.0-beta1
中,我正在尝试实现一个keras
具有从正态随机分布采样的权重的层。我想将分布的平均值作为可训练的参数。
多亏了已经实现的“重新参数化技巧” tensorflow-probability
,如果我没记错的话,原则上应该可以计算相对于分布均值的梯度。
但是,当我尝试使用 计算网络输出相对于平均值变量tf.GradientTape()
的梯度时,返回的梯度为None
。
我创建了两个最小示例,一个具有确定权重的层和一个具有随机权重的层。确定性层的梯度的梯度按预期计算,但梯度是None
在随机层的情况下。没有错误消息详细说明为什么渐变是None
,我有点卡住了。
最小示例代码:
答:这是确定性网络的最小示例:
B:下面的例子非常相似,但是我尝试使用随机抽样的权重(在call()
时间随机抽样!)代替确定性权重:
预期/实际输出:
A:确定性网络按预期工作,并计算梯度。输出是:
B:但是,在类似的随机网络的情况下,梯度的计算不如预期(使用重新参数化技巧)。相反,它们是None
. 完整的输出是
有人可以指出我这里的问题吗?