背景
使用pytorch时,有一个yolov3的bug,我认为涉及到学习率的调整。收集到tencent yolov3和mxnet开源的yolov3,两个优化器中的学习率设置不一样,而且使用GPU数目和batch的更新也不太一样。据此,我简单的了解了下pytorch的权重梯度的更新策略,看看能否一窥究竟。
对代码说明
共三个实验,分布写在代码中的(一)(二)(三)三个地方。运行实验时注释掉其他两个
实验及其结果
实验(三):
不使用zero_grad()时,grad累加在一起,官网是使用accumulate 来表述的,所以不太清楚是取的和还是均值(这两种最有可能)。
不使用zero_grad()时,是直接叠加add的方式累加的。
tensor([[[ 1., 1.],……torch.Size([2, 2, 2]) 0 2 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * tensor([[[ 2., 2.],…… torch.Size([2, 2, 2]) 1 2 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * tensor([[[ 3., 3.],…… torch.Size([2, 2, 2]) 2 2 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
实验(二):
单卡上不同的batchsize对梯度是怎么作用的。 mini-batch SGD中的batch是加快训练,同时保持一定的噪声。但设置不同的batchsize的权重的梯度是怎么计算的呢。
设置运行实验(二),可以看到结果如下:所以单卡batchsize计算梯度是取均值的
tensor([[[ 3., 3.],…… torch.Size([2, 2, 2])
实验(一):
多gpu情况下,梯度怎么合并在一起的。
在《training imagenet in 1 hours》中提到grad是allreduce的,是累加的形式。但是当设置g=2,实验一运行时,结果也是取均值的,类同于实验(二)
tensor([[[ 3., 3.],…… torch.Size([2, 2, 2])
实验代码
import torch import torch.nn as nn from torch.autograd import Variable class model(nn.Module): def __init__(self, w): super(model, self).__init__() self.w = w def forward(self, xx): b, c, _, _ = xx.shape # extra = xx.device.index + 1 ## 实验(一) y = xx.reshape(b, -1).mm(self.w.cuda(xx.device).reshape(-1, 2) * extra) return y.reshape(len(xx), -1) g = 1 x = Variable(torch.ones(2, 1, 2, 2)) # x[1] += 1 ## 实验(二) w = Variable(torch.ones(2, 2, 2) * 2, requires_grad=True) # optim = torch.optim.SGD({'params': x}, lr = 0.01 momentum = 0.9 M = model(w) M = torch.nn.DataParallel(M, device_ids=range(g)) for i in range(3): b = len(x) z = M(x) zz = z.sum(1) l = (zz - Variable(torch.ones(b).cuda())).mean() # zz.backward(Variable(torch.ones(b).cuda())) l.backward() print(w.grad, w.grad.shape) # w.grad.zero_() ## 实验(三) print(i, b, '* * ' * 20)
以上这篇对pytorch中的梯度更新方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
更新日志
2024年11月29日
2024年11月29日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]