使用动态形状广播 tf.matmul

我想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]。


陪伴而非守候
浏览 241回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python