pytorch学习笔记

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


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭