python 列表中的张量与张量流中的常数变量相乘
Multiplication of tensors in a python list with a constant variable in tensorflow
我有一个名为 x
的一维 python 列表,形状为 (1000)
,其中包含形状为 (3, 600)
的张量元素。我还有一个形状为 (600, 1)
的张量流变量 w
,我想将其乘以 x
的每个张量元素。每个操作的结果将是一个形状为 (3, 1)
.
的张量
有什么方法可以有效地将 w
应用于 x
的每个元素?使用 python 循环的逻辑是:
for i in range(1000):
x[i] = tf.matmul(x[i], w)
我已经尝试过以下方法:
w = [w] * 1000
result = tf.mul(x, w)
但是我得到以下错误:
ValueError: Dimensions must be equal, but are 3 and 600 for 'Mul' (op: 'Mul') with input shapes: [1000,3,600], [1000,600,1]
谢谢!
考虑使用 tf.map_fn,它沿张量的第一轴映射函数。在你的情况下,你有 x 是一个形状的张量 (1000, 3, 600)。第一个 dim 是一个列表并不重要。它只会充当张量。
tf.map_fn(lambda x_: tf.matmul(x_, W), x)
您还可以使用 tf.batch_matmul 操作,如下所示。
tf.batch_matmul(x, [w] * 1000)
但是我会使用 tf.tile 而不是 [w] * 1000
我有一个名为 x
的一维 python 列表,形状为 (1000)
,其中包含形状为 (3, 600)
的张量元素。我还有一个形状为 (600, 1)
的张量流变量 w
,我想将其乘以 x
的每个张量元素。每个操作的结果将是一个形状为 (3, 1)
.
有什么方法可以有效地将 w
应用于 x
的每个元素?使用 python 循环的逻辑是:
for i in range(1000):
x[i] = tf.matmul(x[i], w)
我已经尝试过以下方法:
w = [w] * 1000
result = tf.mul(x, w)
但是我得到以下错误:
ValueError: Dimensions must be equal, but are 3 and 600 for 'Mul' (op: 'Mul') with input shapes: [1000,3,600], [1000,600,1]
谢谢!
考虑使用 tf.map_fn,它沿张量的第一轴映射函数。在你的情况下,你有 x 是一个形状的张量 (1000, 3, 600)。第一个 dim 是一个列表并不重要。它只会充当张量。
tf.map_fn(lambda x_: tf.matmul(x_, W), x)
您还可以使用 tf.batch_matmul 操作,如下所示。
tf.batch_matmul(x, [w] * 1000)
但是我会使用 tf.tile 而不是 [w] * 1000