我想tf.matmul在 2 级和 3 级的两个张量之间广播一个操作,其中一个包含“未知”形状的维度(基本上是特定维度中的“无”值)。
问题是,与动态维度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: Shape must be rank 2 but is rank 3 for 'matmul' (op: 'MatMul') with input shape: [?,5,10], [10,20]。
相关分类