【发布时间】:2021-09-10 10:49:58
【问题描述】:
我的代码中有以下嵌套 for 循环段。嵌套循环正在减慢我的完整执行速度。
对于形状为[batchSize,nClass*repeat] 的火炬张量extended_output 和尺寸为[batchSize,nClass] 的另一个火炬张量,我希望聚合按如下方式进行:
for q in range(nClass):
for u in range(repeat):
output[:,q]=output[:,q]+extended_output[:,(q+u*nClass)]
这里,nClass,repeat 都是整数变量,值分别为 1400 和 8。
使用 pytorch 广播可以避免这种嵌套的 for 循环吗?任何帮助都会非常有用。
一个示例工作 cpode 可能是这样的
import torch
nClass=1400
repeat=8
batchSize=64
output=torch.zeros([batchSize,nClass])
extended_output=torch.rand([batchSize,nClass*repeat])
for q in range(nClass):
for u in range(repeat):
output[:,q]=output[:,q]+extended_output[:,(q+u*nClass)]
【问题讨论】:
-
你能加一个Minimal Reproducible Example吗?
标签: python numpy pytorch tensor array-broadcasting