广播带有动态形状的tf.matmul

时间:2018-12-25 16:33:32

标签: python tensorflow

我想在等级2和3的两个张量之间广播tf.matmul操作,其中一个张量包含“未知”形状的维(基本上是特定维中的“无”值)。

问题在于,动态尺寸tf.reshapetf.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的元素。我希望r1r2w与这些批次中3或7个元素分别相乘的结果。因此,r1r2的最终形状分别是(3,5,20)和(7,5,20),但是我得到的是:

  

ValueError:“形状”必须为2级,但“ matmul”为3级(操作:   输入形状为[?,5,10],[10,20]的“ MatMul”)。

1 个答案:

答案 0 :(得分:0)

可以将

w扩展为 get(req: any, res: any, next:any) { test(req.body); res.redirect('/test'); } 张量,其批大小等于输入的张量。然后,可以执行matmul操作

rank-3

实时代码here