如何通过填充将尺寸为 (30, 35, 49)
的张量 reshape 为 (30, 35, 512)
?
最佳答案
虽然 @nemo 的解决方案工作正常,但有一个 pytorch 内部例程 torch.nn.functional.pad
,其作用相同 - 并且具有 torch.ones(*sizes)*pad_value
的几个属性解决方案没有(即其他形式的填充,例如反射填充或复制填充......它还检查一些与渐变相关的属性):
import torch.nn.functional as F
source = torch.rand((5,10))
# now we expand to size (7, 11) by appending a row of 0s at pos 0 and pos 6,
# and a column of 0s at pos 10
result = F.pad(input=source, pad=(0, 1, 1, 1), mode='constant', value=0)
参数的语义是:
-
input
:源张量, -
pad
:长度列表2 * len(source.shape)
形式(开始最后一个轴、结束最后一个轴、开始第二个到最后一个轴、结束第二个到最后一个轴、开始第三个到最后一个轴等),说明应在每个轴的开头和结尾添加多少个维度, -
mode
:'constant'
,'reflect'
或'replicate'
。默认值:'constant'
对于不同类型的填充 -
value
用于恒定的填充。
关于python - 在pytorch中用填充 reshape 张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48686945/