我使用tensorflow contrib的Gamma类来拟合Gamma分布。我的速率和浓度参数是标量张量流变量,它是TensorFlow允许更改的唯一两个变量。出于某种原因,当我正在进行列车优化步骤时,速率变量被改变但浓度变量保持完全相同。使用其他发行版没有问题。我重新参数化以保持他们的领域严格正面:
shape_param = tf.Variable(np.log(initial_shape).astype(np.float32))
shape = tf.exp(shape_param)
scale_param = tf.Variable(np.log(initial_scale).astype(np.float32))
scale = tf.exp(scale_param)
gamma_distribution = Gamma(concentration=shape, rate=scale)
cdf = gamma_distribution.cdf(inp_values)
individual_distance = tf.square(cdf - inp_perc)
distance = tf.reduce_sum(individual_distance)
train_op = tf.train.AdamOptimizer().minimize(distance)
feed_dict = {inp_perc: percentiles,
inp_values: percentile_values}
for epoch in range(100000):
sess.run(train_op, feed_dict=feed_dict)
另外,当我做太多更新时,它会冻结我的笔记本。与任何其他分布一起工作。我认为这与我的另一个问题有关,因为另一个变量被推向0.是否有人知道是什么原因引起的?