【发布时间】:2018-06-07 16:12:01
【问题描述】:
这可能是非常基本的,但我无法弄清楚——我有一个从 Dirichlet-Multinomial 生成的 100x5 矩阵y,我想使用张量流概率推断参数 gamma。下面是我实现的模型(为简单起见,我假设现在所有 5 个类的 gamma 都是相同的):
def dirichlet_multinomial_model(S, p, N, tau):
gamma = ed.Gamma(2.0, 3.0, name='gamma')
y = ed.DirichletMultinomial(500, tf.ones(5)*gamma, name='y')
return y
log_joint = ed.make_log_joint_fn(dirichlet_multinomial_model)
def target_log_prob_fn(gamma):
return log_joint(
S=S, p=p, N=N, tau=tau,
gamma=gamma,
y=y)
当我尝试使用 HMC 从中采样时,我收到以下错误:
ValueError:初始化参数“值”的形状不兼容。预期 (5,),得到 (100, 5)。
因此,指定一个长度为 5 的伽马向量似乎导致程序期望我的数据具有 5x1 的形状。我无法弄清楚如何正确指定模型 - 任何指针都将不胜感激。
【问题讨论】:
-
你能试试
sample_shape=(100)吗? -
啊,这似乎可行——出于某种原因,我认为我必须指定
(100,5)作为样本的形状。我确实收到了一个新错误,但我认为这现在可能与输入数据的类型有关:TypeError: Value passed to parameter 'x' has DataType int32 not in list of allowed values: bfloat16, float16, float32, float64? -
解决了这个问题——出于某种原因,500 的
total_count需要是浮点数而不是整数。感谢您的帮助,如果您将其发布为答案,我会将其标记为正确的。
标签: python python-3.x tensorflow-probability