从张量流中的分布采样无大小张量

时间:2018-07-15 22:09:44

标签: tensorflow

以下代码:

import tensorflow as tf
tfd = tf.contrib.distributions

mean = [0.0, 0.0]
scale = [1.0, 1.0]

dist = tfd.MultivariateNormalDiag(loc=mean, scale_diag=scale)
samp = dist.sample([None])

给出错误:

TypeError: Expected int32, got None of type '_Message' instead.

但是如果将None替换为整数n,则会从分布中生成n个样本。有什么方法可以从分布中获取未知数量的样本?

编辑:原始问题可能措辞不佳;我想采样一个形状的张量(无,...)以与该形状的其他张量组合。显然,需要在其中某处输入内容以在运行时确定大小。

1 个答案:

答案 0 :(得分:1)

你可以做

num_samples = tf.placeholder(dtype=tf.int32, shape=())
sampl = dist.sample(num_samples)

,然后输入样品数量。同样,如果您有一个表示样本数量的标量张量,则可以将其传递。