如何使用一个张量的元素沿着另一个张量的元素应用标量乘法?

How to apply scalar multiplication using elements of one tensor along the elements of another tensor?

给定两个张量,A (m x n x q) 和 B (m x n x 1),如何创建一个循环遍历 A 行的函数,将 B (n x 1) 的每个元素视为 标量 并将它们应用于 A (n x q) 的子矩阵的向量 (q x 1)?

例如,A 是 (6000, 1000, 300) 形状。 B 是 (6000, 1000, 1)。循环遍历 A 的 6000 "slices",对于 A (, 1000, 300) 的 1000 个子矩阵的每个向量,对 B (, 1000, 1) 的子矩阵向量中的每个元素应用标量乘法.

我的措辞可能绝对糟糕。当出现问题时,我会相应地调整措辞。

旁注:我正在与 Python 合作,所以 Theano 可能是最好的?

使用tf.mul如下:

import tensorflow as tf
a = tf.constant([[[1,2,1,2],[3,4,1,2],[5,6,10,12]],[[7,8,1,2],[9,10,1,1],[11,12,0,3]]])
b= tf.constant([[[7],[8],[9]],[[1],[2],[3]]])
res=tf.mul(a,b)
sess=tf.Session()
print(sess.run(res)) 

打印:

[[[  7  14   7  14]
  [ 24  32   8  16]
  [ 45  54  90 108]]

 [[  7   8   1   2]
  [ 18  20   2   2]
  [ 33  36   0   9]]]