2015-10-06 71 views
2

這幾乎是相同的問題,這裏Matrix/Tensor Triple Product?,但對於theano。矩陣三重產品與theano

所以,我有三個矩陣AB,尺寸n*rm*rl*rC,我想計算形狀(n,m,l)從三重(三線性)產物得到的3D張量:

X[i,j,k] = \sum_a A[i,a] B[j,a] C[k,a] 

ABC共享變量:

A = theano.shared(numpy.random.randn(n,r)) 
B = theano.shared(numpy.random.randn(m,r)) 
C = theano.shared(numpy.random.randn(l,r)) 

我倒是李可以用單一的theano表達來寫它,有沒有辦法做到這一點? 如果有很多,哪一個最快?

回答

2
np.einsum('nr,mr,lr->nml', A, B, C) 

相當於

np.dot(A[:, None, :] * B[None, :, :], C.T) 

可以在Theano被實現爲

theano.dot(A[:, None, :] * B[None, :, :], C.T) 
+0

啊!添加尺寸,應該有這個想法,非常感謝! –