이것은 여기 Matrix / Tensor Triple Product 와 거의 같은 질문 입니까? ,하지만 theano.
나는 세 가지 행렬이 그래서 A
, B
, C
크기의 n*r
, m*r
, l*r
, 나는 모양의 3D 텐서 계산하려면 (n,m,l)
트리플 (삼선) 제품의 결과를 :
X[i,j,k] = \sum_a A[i,a] B[j,a] C[k,a]
A
, B
및 C
공유 변수입니다.
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 표현으로 쓰고 싶은데 그렇게 할 수있는 방법이 있나요? 많으면 어느 것이 가장 빠릅니까?
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)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다