我有以下問題。出於性能的原因,我使用numpy.tensordot
,因此我的值存儲在張量和向量中。 我的計算的一個是這樣的:Python張量積
<w_j>
是w_j
和<sigma_i>
的sigma_i
預期值的預期值。 (也許我現在應該叫做西格瑪,因爲它與標準偏差無關)現在爲了進一步計算,我還需要方差。到Get方差我需要計算:
現在,當我實現了第一個公式爲蟒蛇與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)
的載體已lenght l
和張量的尺寸爲l * l * l
。我希望我的問題是可以理解的,並且提前謝謝你!
編輯:第一個公式可以在Python也寫下來,如:erc2 = numpy.einsum('ik, k -> i', numpy.einsum('ijk, k -> ij', re, ewp), ewp)
非常感謝!你的答案正在工作:) – HighwayJohn