Pytorch 为什么在增加torch张量中的尺寸时,使用torch.REPLACE代替for循环? one\u hot\u labels=获取one\u hot\u标签(labels.to(设备),n个类) #注:一个热标签是火炬。尺寸([128,10]) image_one_hot_labels=one_hot_labels[:,:,None,None] image\u one\u hot\u labels=image\u one\u hot\u labels。重复(1,1,mnist\u形状[1],mnist\u形状[2])

Pytorch 为什么在增加torch张量中的尺寸时,使用torch.REPLACE代替for循环? one\u hot\u labels=获取one\u hot\u标签(labels.to(设备),n个类) #注:一个热标签是火炬。尺寸([128,10]) image_one_hot_labels=one_hot_labels[:,:,None,None] image\u one\u hot\u labels=image\u one\u hot\u labels。重复(1,1,mnist\u形状[1],mnist\u形状[2]),pytorch,repeat,Pytorch,Repeat,一般来说,使用pytorch函数执行for循环可以完成的操作要比执行循环快得多。它们的函数针对CPU和GPU进行了优化,达到了原始python无法达到的程度 而且它更简洁:使用repeat使其成为一个自解释的单行代码,而使用for循环则使代码变得不清晰 最后一个旁注:如果可以,请使用展开而不是重复,前者的内存效率要高得多,因为在那里它不执行任何复制(仅更改步幅值以假装更大)

一般来说,使用pytorch函数执行for循环可以完成的操作要比执行循环快得多。它们的函数针对CPU和GPU进行了优化,达到了原始python无法达到的程度

而且它更简洁:使用
repeat
使其成为一个自解释的单行代码,而使用for循环则使代码变得不清晰

最后一个旁注:如果可以,请使用
展开
而不是
重复
,前者的内存效率要高得多,因为在那里它不执行任何复制(仅更改步幅值以假装更大)