【发布时间】:2023-03-20 23:39:02
【问题描述】:
我有五个矩阵 300*300 我有 1380 个大小为 [300] 的向量 我将这些定义为变量
S1= tf.get_variable('S1',dtype=tf.float32, shape=[5,300,300],initializer=tf.random_uniform_initializer(maxval=0.1, minval=-0.1))
E1=tf.get_variable('E1',dtype=tf.float32, shape=[1380,300], initializer=tf.random_uniform_initializer(maxval=0.1, minval=-0.1))
我想要的是将五个矩阵中的每一个与每个向量相乘,并对每个矩阵的结果求和
我试过下面的代码但是效率不高,而且我需要重复这个操作超过17000次(batch_size=50),所以效率对我来说真的很重要。
w_ist = tf.reshape(tf.tile(E1, [batch_size*5,300]), [batch_size, 5, 1380, 300])
R_t = tf.transpose(tf.reshape(tf.tile(S1, [batch_size*1380,300,300]), [batch_size,1380,5,300,300]), perm=[0,2,1,3,4])
dot_1 = tf.matmul(R_t, tf.expand_dims(w_ist,axis=4)) #because R is 5 dim and w_istt is 4 dim we need to expand it by repeating axis number4
有什么有效的方法吗??
【问题讨论】:
-
tf.reduce_sum(S1[:,tf.newaxis,:,:]*E1[:, :,tf.newaxis], [1,2,3])
标签: python tensorflow