我想在等级2和3的两个张量之间广播tf.matmul
操作,其中一个张量包含“未知”形状的维(基本上是特定维中的“无”值)。
问题在于,动态尺寸tf.reshape
和tf.broadcast_to
似乎不起作用。
x = tf.placeholder(shape=[None, 5, 10], dtype=tf.float32)
w = tf.ones([10, 20])
y = x @ w
with tf.Session() as sess:
r1 = sess.run(y, feed_dict={x: np.ones([3, 5, 10])})
r2 = sess.run(y, feed_dict={x: np.ones([7, 5, 10])})
以上面的代码为例。在这种情况下,我要分别喂食两批分别为3和7的元素。我希望r1
和r2
是w
与这些批次中3或7个元素分别相乘的结果。因此,r1
和r2
的最终形状分别是(3,5,20)和(7,5,20),但是我得到的是:
ValueError:“形状”必须为2级,但“ matmul”为3级(操作: 输入形状为[?,5,10],[10,20]的“ MatMul”)。
答案 0 :(得分:0)
w扩展为 get(req: any, res: any, next:any) {
test(req.body);
res.redirect('/test');
}
张量,其批大小等于输入的张量。然后,可以执行matmul操作
rank-3
实时代码here