다음과 같은 문제가 있습니다. 성능상의 이유로 나는 numpy.tensordot
을 사용하고 따라서 내 값을 텐서와 벡터에 저장합니다. 내 계산의 하나는 다음과 같습니다 :파이썬 텐서 곱
<w_j>
는 w_j
및 <sigma_i>
sigma_i
의 기대 값의 기대 값이다. (아마도 나는 시그마라고 부름을해야합니다. 왜냐하면 그것은 표준 편차와 아무런 관련이 없기 때문입니다) 이제 더 많은 계산을 위해서도 분산이 필요합니다.
을 지금이 매우 추상적이고 내가 텐서를 사용하지하고 있기 때문에 일할 때 정말 행복했다 numpy.tensordot
과 파이썬으로 첫 공식을 구현 때 가져 오기 분산에 내가 계산해야합니다. 코드는 다음과 같습니다.
erc = numpy.tensordot(numpy.tensordot(re, ewp, axes=1), ewp, axes=1)
이제이 문제가 발생하고 두 번째 수식에 올바른 양식을 적어 두는 것이 좋습니다. 내 시도 중 하나는 다음과 같습니다.
serc = numpy.tensordot(numpy.tensordot(numpy.tensordot(numpy.tensordot
(numpy.tensordot(re, re, axes=1), ewp, axes=1), ewp, axes=1)
, ewp, axes=1), ewp, axes=1)
하지만 이것은 벡터 대신 스칼라를줍니다.
serc = numpy.einsum('m, m', numpy.einsum('lm, l -> m',
numpy.einsum('klm, k -> lm', numpy.einsum('jklm, j -> klm',
numpy.einsum('ijk, ilm -> jklm', re, re), ewp), ewp), ewp), ewp)
벡터들이 l
극한 상황을 제외한 모든 상황에서 접힘하고 텐서의 차원은 l * l * l
입니다 : 또 다른 시도였다. 내 문제가 이해되기를 바라며 미리 감사드립니다!
편집 : 첫 번째 공식은 파이썬도 같이 적어 수 있습니다 erc2 = numpy.einsum('ik, k -> i', numpy.einsum('ijk, k -> ij', re, ewp), ewp)
정말 고마워요! 귀하의 답변은 작동합니다 :) – HighwayJohn