2016-08-10 3 views
1

Я пытаюсь перемножить два тензоры вместе, что оба имеют одинаковую форму:tensorflow умножать два тензоры

weights = tf.Variable(tf.random_normal([200], stddev=0.35), 
         name="weights") 
weights2 = tf.Variable(tf.random_normal([200], stddev=0.35), 
         name="weights2") 


greg = tf.matmul(weights,weights2) 


sess=tf.Session() 
sess.run(tf.initialize_all_variables()) 
sess.close() 

Пытается это jupyter ноутбука, я получаю эту ошибку:

«Shapes (200,) и (?,?) должны быть равны »

Что мне не хватает?

+3

Из документации: «Входы [' matmul'] должны быть двумерными матрицами с соответствующими внутренними размерами, возможно, после транспонирования ». Нет. https://www.tensorflow.org/versions/r0.10/api_docs/python/math_ops.html#matmul – NPE

+0

gotchya, спасибо – rikkitikkitumbo

ответ

1

Как NPE упоминает в their comment, то tf.matmul() цит ожидает обоих своих входов двумерные тензоры, но ваши аргументы weights и weights2 одномерные тензоры.

Если вы хотите, чтобы вычислить скалярное произведение этих двух тензоров, вы должны изменить их, чтобы быть 200 на 1 и 1 на 200 матриц, используя (например) tf.reshape() следующим образом:

greg = tf.matmul(tf.reshape(weights, [1, 200]), tf.reshape(weights2, [200, 1])) 
+0

спасибо, я пытался tf.expand_dims, но не повезло – rikkitikkitumbo

Смежные вопросы