PyTorch梯度传递
在PyTorch中,传入网络计算的数据类型必须是Variable
类型, Variable
包装了一个Tensor
,并且保存着梯度和创建这个Variable
function的引用,换句话说,就是记录网络每层的梯度和网络图,可以实现梯度的反向传递
则根据最后得到的loss可以逐步递归的求其每层的梯度,并实现权重更新。
在实现梯度反向传递时主要需要三步:
- 初始化梯度值:
net.zero_grad()
- 反向求解梯度:
loss.backward()
- 更新参数:
optimizer.step()
classtorch.nn.
ReplicationPad2d
(padding)
2d填充函数
如果里面是个数字n,则在周围填充n行,
0 1 2 3 4 5 6 7 8
>>> m = nn.ReplicationPad2d(2) >>> input = torch.arange(9).reshape(1, 1, 3, 3)
>>> m(input)
0 0 0 1 2 2 2 0 0 0 1 2 2 2 0 0 0 1 2 2 2 3 3 3 4 5 5 5 6 6 6 7 8 8 8 6 6 6 7 8 8 8 6 6 6 7 8 8 8
>>> m = nn.ReplicationPad2d((1, 1, 2, 0)) >>> m(input) (0 ,0 ,.,.) = 0 0 1 2 2 0 0 1 2 2 0 0 1 2 2 3 3 4 5 5 6 6 7 8 8