ValueError:形状必须为2级,但输入形状为[2],[2,3]的“ MatMul”(操作:“ MatMul”)为1级

馮推宇*_*馮推宇 6 python tensorflow

我对Tensorflow真是个好消息。我已经搜索了相同的问题,但我听不懂。有代码。希望您能帮助我。

码:

import tensorflow as tf

w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2 = tf.Variable(tf.random_normal([3,3],stddev=1,seed=1))

x = tf.constant([0.7,0.9])

a = tf.matmul(x, w1)
y = tf.matmul(a, w2)

sess = tf.Session()

sess.run(w1.initializer)
sess.run(w2.initializer)

print(sess.run(y))
sess.close()
Run Code Online (Sandbox Code Playgroud)

小智 6

常量的形状x(2,),即一个一维数组,您试图将它与一个w1形状为 的二维数组相乘(2, 3),这对于矩阵乘法是不可能的,因为第一个参数的列数必须等于第二个参数中的行。另外,我认为tf.matmul只有在两个数组都是二维的情况下才有效。

其中的很多方法可以改变你的声明x

x = tf.constant([[0.7], [0.9]])

这将创建一个形状为 (2, 1) 的二维常数张量。然后乘以它,

a = tf.matmul(tf.transpose(x), w1)

tf.transpose() 用于创建形状为 (2, 1) 的数组 x 到形状 (1, 2) 的转置。

希望这可以帮助。