错误:
ValueError:形状的等级必须为2,但对于输入形状为6、6的“”MatMul“”(op:“”MatMul“”),等级为1。“
import tensorflow as tf
with tf.device('/gpu:1'):
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], name='b')
c = tf.matmul(a, b)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(c))
我不知道出了什么问题。非常感谢你的帮助。
发布于 2019-02-18 15:19:25
tf.matmul
将矩阵与2维张量相乘。你正试图用matmul乘以两个向量,它们是一维的张量。
您预期的结果是[ 1. 4. 9. 16. 25. 36.]
,这是向量元素的元素乘法。要获得它,您必须使用tf.multiply
操作。
import tensorflow as tf
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], name="a")
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], name="b")
c = tf.multiply(a, b)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(c))
发布于 2019-02-18 15:28:29
否则,如果您想要进行矩阵乘法,而不是像其他答案中建议的那样按元素进行乘法,则需要将向量为2D到行向量与列向量的乘积:
import tensorflow as tf
a = tf.constant([[1.0], [2.0], [3.0], [4.0], [5.0], [6.0]], name="a") # Shape [6, 1]
b = tf.constant([[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]], name="b") # Shape [1, 6]
c = tf.matmul(a, b)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) print(sess.run(c))
发布于 2019-06-10 01:15:39
您可以使用tf.expand_dims(a,0)和tf.expand_dims(b,1)来获得等级2的形状。尝试以下代码:
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], name='b')
c = tf.matmul(tf.expand_dims(a,0), tf.expand_dims(b, 1))
c2=tf.squeeze(c)
sess=tf.Session()
print(sess.run(c))
print(sess.run(c2))enter code here
它将显示:
[[ 91.]]
91.0
https://stackoverflow.com/questions/54703832
复制相似问题