ValueError:Shape必须是等级2,但对于' MatMul'是等级1 (op:' MatMul')输入形状:[2],[2,3]

时间:2018-05-02 08:38:35

标签: python tensorflow

我向Tensorflow发布了这样的消息。我已经搜索过同样的问题,但我无法理解。有代码。希望你能帮助我。

代码:

<input placeholder="Enter your name" v-validate="validations('firstName')">

3 个答案:

答案 0 :(得分:2)

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

您可以将tf.matmul声明更改为

的众多方法之一

x

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

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

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

希望这有帮助。

答案 1 :(得分:2)

在您的情况下,变量x的等级为1。因此是问题。

以下是您遇到此问题的原因。

请参考tensorflow API https://www.tensorflow.org/api_docs/python/tf/matmul

tf.matmul( a,b ,transpose_a = False,transpose_b = False,adjoint_a = False,adjoint_b = False,     a_is_sparse = False,b_is_sparse = False,name = None)

Args:

a:类型为float16,float32,float64,int32,complex64,complex128和 rank> 1 的张量。

b:张量与 类型和等级 相同的张量。

答案 2 :(得分:1)

x的形状为(2,)(2,3)的形状w1不匹配。

您应该更改

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

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

现在x的形状为(1,2)并且可以正常工作。