PyTorch梯度传递
在PyTorch中,传入网络计算的数据类型必须是Variable类型, Variable包装了一个Tensor,并且保存着梯度和创建这个Variablefunction的引用,换句话说,就是记录网络每层的梯度和网络图,可以实现梯度的反向传递
则根据最后得到的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
431

被折叠的 条评论
为什么被折叠?



