所以我正在尝试使用 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 维上可视化,我们得到
对于 output_dim = 16 和以半随机方式选择的 mu 和 sigma 以显示每个维度的差异。可以在此处找到完整的工作示例以及我在此处尝试实现的示例[编辑:对于 1.0 及更高版本,需要将 dist.pdf(points) 更改为 dist.prob(points)]
但是,如果对一批未知大小尝试相同的操作,例如输出将是 (None, output_dim, output_dim, output_dim),那么在解决问题的不同方法下,一切都会崩溃,并出现不同的、不一致的错误消息。
有谁知道如何针对不同的批次大小来实现这一点,其中每个批次元素在一批 mus 和一批 sigma 中都有对应的 mu 和 sigma?
提前致谢 :)
ps 这是使用 tensorflow 0.12,但如果 1.* 中有修复,我会考虑重建 tensorflow