最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

對pytorch中的梯度更新方法詳解

 更新時間:2019年08月20日 11:34:15   作者:庫頁  
今天小編就為大家分享一篇對pytorch中的梯度更新方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

背景

使用pytorch時,有一個yolov3的bug,我認為涉及到學習率的調(diào)整。收集到tencent yolov3和mxnet開源的yolov3,兩個優(yōu)化器中的學習率設置不一樣,而且使用GPU數(shù)目和batch的更新也不太一樣。據(jù)此,我簡單的了解了下pytorch的權(quán)重梯度的更新策略,看看能否一窺究竟。

對代碼說明

共三個實驗,分布寫在代碼中的(一)(二)(三)三個地方。運行實驗時注釋掉其他兩個

實驗及其結(jié)果

實驗(三):

不使用zero_grad()時,grad累加在一起,官網(wǎng)是使用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的權(quán)重的梯度是怎么計算的呢。

設置運行實驗(二),可以看到結(jié)果如下:所以單卡batchsize計算梯度是取均值的

tensor([[[ 3., 3.],…… torch.Size([2, 2, 2])

實驗(一):

多gpu情況下,梯度怎么合并在一起的。

在《training imagenet in 1 hours》中提到grad是allreduce的,是累加的形式。但是當設置g=2,實驗一運行時,結(jié)果也是取均值的,類同于實驗(二)

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中的梯度更新方法詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • flask的orm框架SQLAlchemy查詢實現(xiàn)解析

    flask的orm框架SQLAlchemy查詢實現(xiàn)解析

    這篇文章主要介紹了flask的orm框架SQLAlchemy查詢實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • python如何定義帶參數(shù)的裝飾器

    python如何定義帶參數(shù)的裝飾器

    這篇文章主要為大家詳細介紹了python如何定義帶參數(shù)的裝飾器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python palywright庫基本使用

    python palywright庫基本使用

    這篇文章主要介紹了python palywright庫的基本使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • 解決anaconda prompt找不到的問題解決

    解決anaconda prompt找不到的問題解決

    本文介紹了由于注銷系統(tǒng)導致Anaconda Prompt找不到的問題,文中通過圖文介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2025-03-03
  • python飛機大戰(zhàn) pygame游戲創(chuàng)建快速入門詳解

    python飛機大戰(zhàn) pygame游戲創(chuàng)建快速入門詳解

    這篇文章主要介紹了python飛機大戰(zhàn) pygame游戲創(chuàng)建,結(jié)合實例形式詳細分析了Python使用pygame創(chuàng)建飛機大戰(zhàn)游戲的具體步驟與相關操作注意事項,需要的朋友可以參考下
    2019-12-12
  • python獲取各操作系統(tǒng)硬件信息的方法

    python獲取各操作系統(tǒng)硬件信息的方法

    這篇文章主要介紹了python獲取各操作系統(tǒng)硬件信息的方法,實例分析了Python在windows、Linux及Mac等操作系統(tǒng)上獲取CPU信息的相關技巧,需要的朋友可以參考下
    2015-06-06
  • Python中數(shù)字(Number)數(shù)據(jù)類型常用操作

    Python中數(shù)字(Number)數(shù)據(jù)類型常用操作

    本文主要介紹了Python中數(shù)字(Number)數(shù)據(jù)類型常用操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Python視頻編輯庫MoviePy的使用

    Python視頻編輯庫MoviePy的使用

    這篇文章主要介紹了Python視頻編輯庫MoviePy的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • python+pytest接口自動化參數(shù)關聯(lián)

    python+pytest接口自動化參數(shù)關聯(lián)

    這篇文章主要介紹了python+pytest接口自動化參數(shù)關聯(lián),參數(shù)關聯(lián),也叫接口關聯(lián),即接口之間存在參數(shù)的聯(lián)系或依賴,更多相關內(nèi)容需要的小伙伴可可以參考一下
    2022-06-06
  • python防止程序超時的實現(xiàn)示例

    python防止程序超時的實現(xiàn)示例

    因為某個需求,需要在程序運行的時候防止超時,本文主要介紹了python防止程序超時的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08

最新評論

石城县| 彭山县| 法库县| 瑞安市| 明溪县| 田东县| 凌海市| 湛江市| 鲜城| 绥棱县| 阜阳市| 琼海市| 瓦房店市| 桐庐县| 东丰县| 仙桃市| 祥云县| 碌曲县| 平昌县| 界首市| 阿拉尔市| 海丰县| 仁布县| 绥宁县| 双江| 旬阳县| 南阳市| 林州市| 杨浦区| 沧州市| 漯河市| 崇左市| 于田县| 沙湾县| 安平县| 北宁市| 大余县| 额济纳旗| 鄄城县| 邵武市| 安化县|