日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pytorch教程龙曲良26-30

發布時間:2024/4/13 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pytorch教程龙曲良26-30 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

26什么是梯度1

導數(在給定方向的變化量)和偏微分(在給定的自變量上的變化量)都是標量,只有大小沒有方向
梯度就是所有偏微分的向量,有方向有大小

函數梯度是一個向量,向量方向表示這個函數在當前點的一個增長方向,向量的模/長度表示增長速率

這里的a是lr,這里初始化(0,0)剛好取到極小值

當lr太大的話會更新太快跳到箭頭所指的地方,顯然不是我們想要的情況

27什么是梯度2

總是有z1>z2,就是凸函數(碗一樣),可以找到全局最優解,但是這種情況在現實中不常見

存在多個局部最小值

resnet56
網絡很深可能平面會很粗糙陷入局部最小值,resnet56加了shortcut(走捷徑)使得平面變得光滑,這樣可以找到全局最小值

陷入鞍點
不是最大值也不是最小值,或者在x維度取局部最小值,在y維度上取局部最大值,比搜索到局部最小值更可怕,可能就陷在鞍點
Optimizer Performance哪些因素會影響搜索全局最小值的過程
? initialization status
? learning rate
? momentum#動量 怎么逃離局部最小值
? etc.

initialization status
圖一初始狀態從左邊開始,找到局部最小值;
初始狀態從右邊開始,找到全局最小值,而且二者搜索的步數也不同
初始化可以按照主流的初始化方法,何愷明初始方法


learning rate
lr太大 ,即步長太大可能會直接跨過最小值跨到另一邊去,這樣可能不收斂,所以lr要設置小一點,0.01,0.001,如果收斂可以大一點這樣收斂速度快一點。lr不僅影響速度還影響精度,lr過大可能會使得在最小值附近震蕩,不能達到最小值,所以應該設置再小一點

momentum
逃出局部最小值

可能會在一個小坑里徘徊但是如果慣性夠大就可以沖出去,到達更小的坑去

28常見函數的梯度





單層感知機

29激活函數與loss的梯度1

問題:單層感知機激活函數不可導

sigmoid/logistic

sigmoid函數的求導,可以求出一個其對x的導數,且其連續光滑,把負無窮到正無窮的值壓縮在0-1之間,如概率和RGB像素點。問題是:趨向正無窮,導數接近于0,loss的值長時間得不到更新,梯度離散。

torch.nn.function as F


Tanh[-1,1]


Relu
非常適合做deep learning,所以都優先使用relu函數
因為x>0 梯度是1

保持梯度不變,減少出現梯度離散或梯度爆炸的情況

30激活函數與loss的梯度2

Typical Loss
? Mean Squared Error

? Cross Entropy Loss
? binary
? multi-class
? +softmax
? Leave it to Logistic Regression Part

如果使用torch.norm的函數要要這樣使用(因為其默認是L2-norm,有開方),要加一個平方:torch.norm(y-pred,2).pow(2)


w初始化為一個長度為1 ,維度為1,值為2的一個tensor

import torch import torch.nn.functional as F x=torch.ones(1)#標量 #w=torch.full([1],2)#長度為1且維度為1的張量 這樣寫默認w不需要求梯度 w=torch.tensor([2.0],requires_grad=True) mse=F.mse_loss(torch.ones(1),x*w)#pred初始化為1 #loss=(pred-y)**2對這個函數的投遞求導, 即2(pred-y)*loss對w的求導,即2(pred-y)x(-1) #x=1 w=2,所以求導結果2(1-1*2)*1*(-1)=2 b=torch.autograd.grad(mse,[w]) print(b)#(tensor([2.]),)

backward會記錄這個圖的所有路徑,在最后結點調用backward會自動的從后往前傳播,完成這條路上所有需要梯度的計算,會把這些梯度信息附加每個tensor的成員.grad上 如w.grad和b.grad

注意要區分w.norm()還是w.grad.norm()
torch.autograd.grad()返回的是各個w的梯度的列表
loss.backward() 可是直接指定wi.grad

總結

以上是生活随笔為你收集整理的pytorch教程龙曲良26-30的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。