2016-08-10 2 views
1

Je suis en train de multiplier deux tenseurs ensemble que les deux ont la même forme:tensorflow multiplier deux tenseurs

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() 

Un essai en bloc-notes jupyter, je reçois cette erreur:

« Formes (200,) et (?,?) doivent avoir le même rang "

Qu'est-ce qui me manque?

+3

De la documentation: "Les entrées [' matmul'] doivent être des matrices bidimensionnelles, avec des cotes intérieures correspondantes, éventuellement après transposition. " Le vôtre ne l'est pas. https://www.tensorflow.org/versions/r0.10/api_docs/python/math_ops.html#matmul – NPE

+0

gotchya, merci – rikkitikkitumbo

Répondre

1

Comme NPE mentionne dans their comment, le tf.matmul() op attend ses deux entrées à tenseurs en deux dimensions, mais vos arguments weights et weights2 sont unidimensionnels tenseurs.

Si vous voulez calculer le produit intérieur de ces deux tenseurs, vous devez les remodeler à 200 par 1 et 1 par 200 matrices, en utilisant (par exemple) tf.reshape() comme suit:

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

merci, j'essayais tf.expand_dims, mais sans chance – rikkitikkitumbo