Tensorflow:在两个不同形状的张量的第一个维度上压缩

时间:2019-03-16 02:19:44

标签: python tensorflow

假设我有两个张量,它们的形状分别为[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类似物;有办法吗?

1 个答案:

答案 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)