问题标签 [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.
tensorflow - 如何计算两个张量流概率分布的 Kullback-Leibler 散度相对于分布均值的梯度?
在 tensorflow-2.0 中,我试图创建一个keras.layers.Layer
输出两个之间的 Kullback-Leibler (KL) 散度tensorflow_probability.distributions
。我想计算输出相对于其中一个的平均值的梯度(即 KL 散度)tensorflow_probability.distributions
。
0
不幸的是,在我迄今为止的所有尝试中,生成的渐变都是。
我尝试实现如下所示的最小示例。我想知道这些问题是否与 的急切执行模式有关tf 2
,因为我知道在 中有效的类似方法,tf 1
默认情况下禁用急切执行。
这是我尝试过的最小示例:
上面代码的输出是
KL 散度计算正确,但所得梯度为0
. 获得梯度的正确方法是什么?
python - Tensorflow - 时间卷积网络不学习
我在 Tensorflow 中开发了一个自回归时间卷积网络。但是,当我在 Temporal Block 中添加一个概率层时,它会停止全批次学习。在小批量中,损失提高了,准确度也提高了,但测试集中的准确度没有改变。
导致这种情况的问题是这行代码:
x = tfp.layers.DistributionLambda(lambda t: tfd.Normal(loc=t, scale=.1))(x)
代码如下:
全批次的输出训练示例:
使用小批量的输出训练示例:
我添加了归一化,降低了学习率(因为它似乎在梯度中存在一个平台),改变了批量大小、激活函数、隐藏层但没有成功。
关于如何解决这个问题的任何想法?
数据可在此处获得
我正在使用 TensorFlow 1.14
montecarlo - 使用 tfp.mcmc.MetropolisHastings 进行物理模型
我是 Tensorflow 的新手,想使用 Tensorflow 概率库对物理问题进行建模。Tensorflow 带有 tfp.mcmc.MetropolisHastings 函数,这是我想要使用的算法。
我提供了我的初始分布。在我的例子中,这是一个二维网格,每个网格点上都有一个“旋转”(物理学并不重要),可以是 +1 或 -1。新状态 x' 的提议应该是其中一个自旋翻转的旧网格,因此在某一点 +1 变为 -1,反之亦然。我可以传递步长参数,但我的 x 不是我可以简单地增加的标量。我该如何建模?有没有一种方法可以传递更新规则,而不仅仅是将值增加一定的步长?
python-3.x - 使用 Tensorflow Probability 的 RandomWalkMetropolis 函数执行 RandomWalk 步骤
我是 Tensorflow Probability 的新手,想做一个 RandomWalk Montecarlo 模拟。假设我有代表状态的张量 r。我希望 tfp.mcmc.RandomWalkMetropolis 函数返回新状态 r' 的提议。
仅返回此 RandomWalkMetropolis 对象,而不是相同的状态或轻微扰动的状态。RandomWalkMetropolis 类还包含函数 one_step,但它需要“previous_kernel_results”,而我没有,因为我希望这是我的第一步。另外,如何进一步指定 Metropolis 接受/拒绝步骤?
python - 有没有办法在 TensorFlow 会话中调用 Numpy 函数?
我正在尝试使用 TensorFlow 和 TensorFlow Probability 实现期望最大化算法。在我尝试实现缺失数据(数据可以包含某些随机维度的 NaN 值)之前,它运行良好。
问题是,使用缺失数据我不能再将所有操作作为向量操作,我必须使用索引和 for 循环,如下所示:
我发现这些操作效率不高。虽然第一个样本每个样本大约需要不到 1 秒,但在 50 个样本之后,每个样本大约需要 3 秒。我猜这是因为我在会话中创建了不同的张量,这会弄乱内存或其他东西。
我对使用 TensorFlow 很陌生,很多人只将 TensorFlow 用于深度学习和神经网络,所以我找不到解决方案。
然后我尝试仅使用 numpy 数组和 numpy 操作来实现前面的 for 循环和在该循环内调用的函数。但这返回了以下错误:
您必须使用 dtype double 和 shape [8,18] 为占位符张量“Placeholder_4”提供一个值
发生此错误是因为当它尝试在循环内执行 numpy 函数时,尚未输入占位符。
有没有办法解决这个问题?谢谢。
python - n-batch > 1 的多元正态分布
我试图将如何在最新版本的 Tensorflow中使用 MultiVariateNormal 分布中给出的示例概括为二维但不止一批的正态分布。当我运行以下命令时:
我收到不兼容的形状错误:
我对文档(https://www.tensorflow.org/api_docs/python/tf/contrib/distributions/MultivariateNormalFullCovariance)的理解是,要计算 pdf,需要一个 [n_observation, n_dimensions] 张量(在这个例子:idx.shape
= TensorShape([Dimension(3600), Dimension(2)])
)。我数学错了吗?
tensorflow2.0 - 如何在 tensorflow 2.0 中训练 tensorflow 概率双射器(权重)?
以下示例是一些双射变换的简单版本(例如 BatchNorm 的泛化(将分布拟合到输入并使用 CDF 像 copula 一样变换输入)。下面的代码导致“未提供梯度”错误.
文档中有这种模式吗?我没有找到它。
python - 在 colab 中运行 jupyter 笔记本
以张量流概率运行 colab 示例我收到错误。
尝试更改它,但我认为代码需要更新。
没有错误。colab 笔记本应使用最新更新运行。我认为代码需要更新,我试图用更多错误更新配置。
tensorflow - 来自正态分布和柯西分布的独立分布
tfp.distributions.Independent 可用于从每个维度独立的多元分布(例如 2-batch Normal)中进行采样。它可以用来定义一个二维分布,其中一个维度是柯西,另一个是正态分布?如果有怎么办?
python - Eager 模式下的 TFP 精确 GP 回归
我正在尝试使用 TF2.0 急切模式执行精确的 GP 回归,基于来自 https://colab.research.google.com/github/tensorflow/probability/blob/master/tensorflow_probability/examples的基于原始图的示例/jupyter_notebooks/Gaussian_Process_Regression_In_TFP.ipynb
然而优化失败:
“tensorflow.python.framework.ops.EagerTensor”对象没有属性“_in_graph_mode”
如果我将幅度、length_scale 和 observation_noise_variance 分别移动到 tf.Variable,例如:
优化失败:
ValueError:没有为任何变量提供梯度:['amplitude:0', 'length_scale:0', 'observation_noise_variance:0']。
我究竟做错了什么?