Tensorflow MultivariateNormalDiag 张量形状 (None, output_dim, output_dim, output_dim) 给定 mu 和 sigma 形状 (None, 3)
Tensorflow MultivariateNormalDiag tensor of shape (None, output_dim, output_dim, output_dim) given mu and sigma of shape (None, 3)
所以我正在尝试使用 MultivariateNormalDiag
制作多元高斯张量
我想像这样为 mu 和 sigma 参数提供两个形状为 (None, 3) 的张量
dist = tf.contrib.distributions.MultivariateNormalDiag(mu, sigma)
这样我就可以提供一组点,在这种情况下
dim_range = [float(i) for i in range(0, max_size)]
points = [[a,b,c] for a in dim_range for b in dim_range for c in dim_range]
并检索一组密度正态分布在 mu 周围的点,如
gauss_tensor = tf.reshape(
dist.pdf(points),
shape=(None, output_dim, output_dim, output_dim)
)
举一个例子,例如。 mu 和 sigma 具有形状 (3,) 和输出形状 (output_dim, output_dim, output_dim),如果以 3 维方式可视化,我们得到
for output_dim = 16 并且以半随机方式选择 mu 和 sigma 以显示每个维度的方差。可以找到完整的工作示例 here and an example of what i'm trying to achieve here [编辑:从 1.0 开始,dist.pdf(points) 需要更改为 dist.prob(points)]
但是,如果对未知大小的批次进行同样的尝试,则输出将是 (None、output_dim、output_dim、output_dim) , 鉴于解决问题的不同方法,一切都会崩溃,并显示不同的、不一致的错误消息。
有谁知道如何针对不同的批量大小完成此操作,其中每个批量元素在一批 mus 和一批 sigma 中都有相应的 mu 和 sigma?
提前致谢:)
p.s。这是使用 tensorflow 0.12 但如果 1.* 中有修复,我会考虑重建 tensorflow
正如朋友指出的,MultivariateNormalDiag 的功能在 1.2 中有所不同。升级 Tensorflow 并重新调整一些东西解决了这个问题。
mu_placeholder = tf.placeholder(
dtype=tf.float32,
shape=(None, None, 3),
name='mu-tensor')
[编辑:对于 mus/sigmas (None, 1, 3) 也给出了正确的结果]
mu_placeholder = tf.placeholder(
dtype=tf.float32,
shape=(None, 1, 3),
name='mu-tensor')
一个有效的例子是here
所以我正在尝试使用 MultivariateNormalDiag
制作多元高斯张量我想像这样为 mu 和 sigma 参数提供两个形状为 (None, 3) 的张量
dist = tf.contrib.distributions.MultivariateNormalDiag(mu, sigma)
这样我就可以提供一组点,在这种情况下
dim_range = [float(i) for i in range(0, max_size)]
points = [[a,b,c] for a in dim_range for b in dim_range for c in dim_range]
并检索一组密度正态分布在 mu 周围的点,如
gauss_tensor = tf.reshape(
dist.pdf(points),
shape=(None, output_dim, output_dim, output_dim)
)
举一个例子,例如。 mu 和 sigma 具有形状 (3,) 和输出形状 (output_dim, output_dim, output_dim),如果以 3 维方式可视化,我们得到
for output_dim = 16 并且以半随机方式选择 mu 和 sigma 以显示每个维度的方差。可以找到完整的工作示例 here and an example of what i'm trying to achieve here [编辑:从 1.0 开始,dist.pdf(points) 需要更改为 dist.prob(points)]
但是,如果对未知大小的批次进行同样的尝试,则输出将是 (None、output_dim、output_dim、output_dim) , 鉴于解决问题的不同方法,一切都会崩溃,并显示不同的、不一致的错误消息。
有谁知道如何针对不同的批量大小完成此操作,其中每个批量元素在一批 mus 和一批 sigma 中都有相应的 mu 和 sigma?
提前致谢:)
p.s。这是使用 tensorflow 0.12 但如果 1.* 中有修复,我会考虑重建 tensorflow
正如朋友指出的,MultivariateNormalDiag 的功能在 1.2 中有所不同。升级 Tensorflow 并重新调整一些东西解决了这个问题。
mu_placeholder = tf.placeholder(
dtype=tf.float32,
shape=(None, None, 3),
name='mu-tensor')
[编辑:对于 mus/sigmas (None, 1, 3) 也给出了正确的结果]
mu_placeholder = tf.placeholder(
dtype=tf.float32,
shape=(None, 1, 3),
name='mu-tensor')
一个有效的例子是here