批量大小可变的矩阵向量批量乘法

时间:2018-07-04 12:59:11

标签: python tensorflow matrix-multiplication

我正在尝试将张量流中的一组矩阵与一组矢量相乘。我有两个分别具有形状[k,n,n]和[k,n]的张量。如果我在网络中设置了k,则可以将成对的点设置为:

final =  tf.einsum("kji,ki->kj", M, V)

但是einsum()不适用于动态形状(可变批量大小)的张量:

  

文件“ ... \ Python35 \ site-packages \ tensorflow \ python \ ops \ special_math_ops.py”,第207行,以einsum开头      axes_to_sum)

     

文件“ ... \ Python35 \ site-packages \ tensorflow \ python \ ops \ special_math_ops.py”,第252行,_einsum_reduction      如果len(t0_axis_labels)!= len(t0.get_shape()):

     

文件“ ... \ Python35 \ site-packages \ tensorflow \ python \ framework \ tensor_shape.py”,第575行,位于 len      提高ValueError(“无法采用未知等级的Shape的长度。”)

     

ValueError:无法采用未知等级的Shape的长度。

任何想法如何以不同的方式解决问题? 注意,在np表示法中,我需要实现以下目标: 对于形状为[k,n]的c

c = np.zeros([k,n])
c[i,:] = np.dot(M[i,:,:],V[i,:]) 

TF版本1.8

0 个答案:

没有答案