如何使用一个张量的元素沿着另一个张量的元素应用标量乘法?
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]]]
给定两个张量,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]]]