pytorch - 置换后如何进行张量点运算
问题描述
我有 2 个张量,A 和 B:
A = torch.randn([32,128,64,12],dtype=torch.float64)
B = torch.randn([64,12,64,12],dtype=torch.float64)
C = torch.tensordot(A,B,([2,3],[0,1]))
D = C.permute(0,2,1,3) # shape:[32,64,128,12]
张量 D 来自操作“tensordot -> permute”。如何实现一个新的操作 f() 以在 f() 之后进行 tensordot 操作,例如:
A_2 = f(A)
B_2 = f(B)
D = torch.tensordot(A_2,B_2)
解决方案
您是否考虑过使用torch.einsum
哪个非常灵活?
D = torch.einsum('ijab,abkl->ikjl', A, B)
问题tensordot
在于它输出 的A
之前的所有维度,B
而您正在寻找的(当排列时)是从A
和中“交错”维度B
。
推荐阅读
- sql - 如何在 SQL 中将字符添加到一定长度的结果中
- reactjs - 使用 JWT Authentication WP 插件反应登录
- c# - 发送电子邮件后代码挂起,但电子邮件发送正常(静态异步任务)
- python - 在神经网络中关闭或忽略pytorch中的神经元
- qemu - 无法从 qemu 中的 AHCI hhd 启动
- r - R - 在循环中保存多个图时出错
- java - 为什么 FileAppender 没有锁定文件?
- html - 如何在 2x2 中制作特殊的 flex
- java - 将无穷大参数作为输入传递给泛型
- postgresql - 如果超过 6 列,Azure 数据工厂复制管道失败