두 개의 행렬 A, B, NxKxD 차원을 가지고 있고 행렬 C, NxKxDxD 차원을 얻고 싶습니다. C [n, k] = A [n, k] x B [n, k] .T (여기서 "x"는 차원 Dx1과 1xD의 행렬의 결과를 의미하므로 결과는 DxD 차원이어야 함) 이제 다음과 같은 코드가 생성됩니다 (여기서는 A = B = X).다차원 행렬 (python, numpy)의 벡터 내적
def square(X):
out = np.zeros((N, K, D, D))
for n in range(N):
for k in range(K):
out[n, k] = np.dot(X[n, k, :, np.newaxis], X[n, k, np.newaxis, :])
return out
큰 N과 K의 경우 파이썬이주기 때문에 느릴 수 있습니다. 이 곱셈을 하나의 방법으로 만들 수 있습니까 numpy의 기능이 있습니까?