最近在研究EDSR代码(项目地址:https://github.com/sksq96/pytorch-summary)的时候看到了forward_chop function,该参数的help写的是
parser.add_argument('--chop', action='store_true',
help='use memory-efficient forward')
于是对其怎样加速进行了学习,将思路和大家分享一下。
这部分代码黏贴如下:
首先是开始部分的代码,我们假设最开始的输入是 tuple(tensor(1, 3, 678, 1020))
(里面的是size, 表示 1 x 3 x 678 x 1020)
def forward_chop(self, *args, shave=10, min_size=160000):
n_GPUs = min(self.args.n_GPUs, 4)
h, w = args[0].size()[-2:]
top, left = slice(0, h//2 + shave), slice(0, w//2 + shave)
bottom, right = slice(h - h//2 - shave, h), slice(w - w//2 - shave, w)
x_chops = [torch.cat([
a[.