2016-11-25 12 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 и больше не должны иметь отношение к другим.