2016-11-25 36 views
0

我试图尽量减少与大小n*m 定义了一个变量张量的简单损失的问题是当我跑步时的优化,我有以下错误:Tensorflow:reduce_prod渐变破损?

ValueError: Shape() must have rank 1 

好奇的是,如果不是tf.reduce_prod我使用tf.reduce_sum,它工作得很好,但损失的形状保持不变。 任何人都可以尝试这个,并告诉我,如果结果是在别处相同?

def someloss(a): 
    da=tf.reduce_prod(a,reduction_indices=1) 
    return tf.reduce_mean(tf.sqrt(tf.square(da))) 

n=5 
m=2 
a=tf.Variable(tf.random_normal([n,m],mean=1.0, stddev=0.35)) 
cost=someloss(a) 
opt = tf.train.AdamOptimizer().minimize(cost) 
sess = tf.Session() 
init = tf.initialize_all_variables() 
with sess.as_default(): 
    sess.run(init) 
    for i in range(100): 
     sess.run(opt) 
+0

不能重现... – sygi

+0

它适合你吗?你没有错误? – user3575801

+0

是的,它适用于我。 – sygi

回答

0

OP自我解决的问题:这是一个old TensorFlow bug已定长1.0版本之前,应该不再是相关的人。