numpy - 张量点混乱
问题描述
我可能误会了tensordor
。我正在尝试进行以下部分收缩:
c(e,q,i,j) = a(e,q,i,j,k,l) * b(e,q,l,k)
使用
import numpy as np
a = np.random.random(1*4*2*2*2*2).reshape(1,4,2,2,2,2)
b = np.random.random(1*4*2*2).reshape(1,4,2,2)
c = np.tensordot(a,b,axes=([5,2],[4,3]))
但它给了我错误
/usr/local/lib/python3.7/site-packages/numpy/core/numeric.py in tensordot(a, b, axes)
1282 else:
1283 for k in range(na):
-> 1284 if as_[axes_a[k]] != bs[axes_b[k]]:
1285 equal = False
1286 break
IndexError: tuple index out of range
我有什么误解?
解决方案
我们希望保持少数轴对齐。因此,tensordot
不会直接工作。相反,我们可以使用np.einsum
-
np.einsum('ijklmn,ijnm->ijkl',a,b)
推荐阅读
- asp.net-web-api - swagger 是如何屏蔽默认界面的?
- apache-zeppelin - 齐柏林飞艇 | 0.8.0 | 禁用氦气
- python - 如何在不同版本的 python 上安装 python 模块
- docker - docker 中的 suricata 不允许操作错误
- javascript - 在 v-for 中使用数组的对象属性和 vue.js 中的 v-bind?
- javascript - axios如何获取方括号内的数据?
- c++ - 无效的分辨率 dpi。正方体
- java - 累积按位运算
- python-3.x - Python Pandas 数据框,如何将新列集成到新的 csv 中
- python - 来自 Walmart JSON Open API Feed 的 Python 中的 JSON 格式问题