假设我有两个张量,它们的形状分别为[b, n]
和[b, n, m]
。这些可以解释为一批输入向量,每种形状为[n]
,以及一批权重矩阵,每种形状为[n, m]
,其中批大小为b
。我想在第一个维度上将这些元素逐个配对,因此每个输入向量都有一个相应的权重矩阵,然后将每个输入乘以其权重,得出形状为[b, m]
的张量。
在普通的Python中,我怀疑这看起来像
output_list = [matmul(w, i) for w, i in zip(weight_list, input_list)]
,但找不到Tensorflow类似物;有办法吗?
答案 0 :(得分:1)
tf.matmul
可以对批处理中的每个训练示例进行覆盖。但是您需要解决一些尺寸问题才能实现目标。
import tensorflow as tf
b,n,m = 4,3,2
weight_list = tf.random.normal(shape=(b,n,m))
input_list = tf.random.normal(shape=(b,n))
result = tf.squeeze(tf.matmul(tf.expand_dims(input_list,axis=1),weight_list))
print(result.shape)
(4, 2)