国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器]

這篇具有很好參考價(jià)值的文章主要介紹了[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器]。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


PyTorch——開(kāi)源的Python機(jī)器學(xué)習(xí)庫(kù)

一、前言

??用了Matlab搭建神經(jīng)網(wǎng)絡(luò)才愈發(fā)感覺(jué)"人生苦短,我用PyTorch“是多么正確。畢竟新的神經(jīng)網(wǎng)絡(luò)架構(gòu)還是得自己一點(diǎn)點(diǎn)敲,現(xiàn)在是一點(diǎn)都笑不出來(lái)了,指望Matlab提供的老框架和訓(xùn)練算法也做不出什么算法方法的突破,頂多就是在實(shí)現(xiàn)功能上方便點(diǎn)罷了。
??本博文要求讀者有一定的Python編程基礎(chǔ)!,對(duì)機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)有一定的了解!。如果是零基礎(chǔ)學(xué)習(xí)人群,請(qǐng)參看我之前的Python基礎(chǔ)語(yǔ)法博文和人工智能相關(guān)博文。讀完它們不會(huì)花費(fèi)你太多的時(shí)間,并且如果你能做到簡(jiǎn)單地閱覽完這些博文,就完全有足夠的知識(shí)儲(chǔ)備來(lái)徹底搞懂這篇博文的全部?jī)?nèi)容了。
??以下貼上我之前寫(xiě)的關(guān)于神經(jīng)網(wǎng)絡(luò)相關(guān)的博文,Python相關(guān)的也可以去我的博客主頁(yè)去找。
[深度學(xué)習(xí)入門]基于Python的理論與實(shí)現(xiàn)[感知機(jī)、神經(jīng)網(wǎng)絡(luò)、誤差反向傳播法及相關(guān)技巧]

[深度學(xué)習(xí)入門]什么是神經(jīng)網(wǎng)絡(luò)?[神經(jīng)網(wǎng)絡(luò)的架構(gòu)、工作、激活函數(shù)]


二、深度學(xué)習(xí)框架——PyTorch

2.1 PyTorch介紹

??PyTorch是 Facebook 發(fā)布的一款深度學(xué)習(xí)框架,和Tensorflow,Keras,Theano等其他深度學(xué)習(xí)框架都不同。作為動(dòng)態(tài)計(jì)算圖模式,其應(yīng)用模型支持在運(yùn)行過(guò)程中根據(jù)運(yùn)行參數(shù)動(dòng)態(tài)改變,而其他幾種框架都是靜態(tài)計(jì)算圖模式,其模型在運(yùn)行之前就已經(jīng)確定。
??Python模塊可以通過(guò)pip安裝臨時(shí)使用時(shí)可以使用下述命令:

pip install pythonModuleName -i
https://pypi.douban.com/simple

??也可以永久更改:/root/.pip/pip.conf:

[global]
index-url = https://pypi.douban.com/simple

2.2 Python安裝詳解

??安裝Python就略去不寫(xiě)了,都是可視化界面也沒(méi)什么可說(shuō)的。安裝后查看當(dāng)前版本
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy

[root@iZ25ix41uc3Z ~]# python --version
Python 3.10.9

??下載 setuptools

wget --no-check-certificate 
http://pypi.python.org/packages/source/s/setuptools/setuptools-
解壓之后進(jìn)入目錄setuptools-0.6c11
安裝python setup.py install

??安裝 pip,和 setuptools 過(guò)程類似:

wget --no-check-certificate 
https://github.com/pypa/pip/archive/1.5.5.tar.gz
解壓之后進(jìn)入目錄pip-1.5.5
安裝python setup.py install

??看看 pip 安裝是否成功,執(zhí)行:

pip list

[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??如果顯示的不是上方的畫(huà)面,則我們先安裝 openssl

yum install openssl openssl-devel -y

??然后再重新安裝 python,別的不用重新安裝了。

[root@iZ25ix41uc3Z Python-3.10.9]# pip list
pip (1.5.4)
setuptools (27.3.0)
wsgiref (0.1.2)

??最后我們就可以安裝 numpy,scipy 等科學(xué)計(jì)算庫(kù)了。

pip install numpy
pip install scipy

[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??最后驗(yàn)證一下 numpy
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??大功告成,如此一來(lái)我們已經(jīng)成功安裝 numpy


2.3 PyTorch安裝詳解

??先試試看 pip 安裝能不能成功。輸入命令 pip install pytorch,顯示結(jié)果如下:
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??看來(lái)PyTorch不支持pip安裝,這里提示到 pytorch.org 下載安裝,同時(shí),瀏覽器自動(dòng)打開(kāi)網(wǎng)址:
http://pytorch.org/#pip-install-pytorch
??跟著上面的安裝步驟安裝就是了,這里也可以去網(wǎng)上找找安裝教程。因?yàn)檫@里不是我們的重點(diǎn),講多了也沒(méi)什么意思。
??安裝完成后,我們輸入命令 python,進(jìn)入 python 交互環(huán)境,寫(xiě)一段 pytorch 程序驗(yàn)證一下是不是安裝成功了,這段代碼調(diào)用 torch 的ones 方法,看看能不能正常顯示結(jié)果:
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??看來(lái)沒(méi)什么問(wèn)題,安裝成功了。下面,我們來(lái)一步步學(xué)習(xí) pytorch 吧。


三、變量

??先看看 Tensor,pytorch 中的數(shù)據(jù)都是封裝成 Tensor 來(lái)引用的Tensor實(shí)際上就類似于 numpy 中的數(shù)組,兩者可以自由轉(zhuǎn)換
??我們先生成一個(gè)3*4維的數(shù)組

import torch
x = torch.Tensor(3,4)
print("x Tensor: ",x)

[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??可以看到 torch.Tensor() 方法生成制定維度的隨機(jī)數(shù)。
??下面看看 Variable 的基本操作,引用 Variable

import torch
from torch.autograd import Variable
x=Variable(torch.Tensor(2,2))
print("x variable: ",x)

[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??Variable 不光包含了數(shù)據(jù),還包含了其他東西,那么,還包含什么東西呢?
??默認(rèn) Variable 是有導(dǎo)數(shù) grad 的,x.data 是數(shù)據(jù),這里 x.data 就是 Tensor。x.grad 是計(jì)算過(guò)程中動(dòng)態(tài)變化的導(dǎo)數(shù)

print ("x.data: ",x.data, ",x.grad: ",x.grad)

??此時(shí) Variable 還未進(jìn)行計(jì)算,因此 x.grad 為 None。


四、求導(dǎo)

??神經(jīng)網(wǎng)絡(luò)中的求導(dǎo)的作用用導(dǎo)數(shù)對(duì)神經(jīng)網(wǎng)絡(luò)的權(quán)重參數(shù)進(jìn)行調(diào)整
??Pytorch 中為求導(dǎo)提供了專門的包,包名叫autograd。如果用autograd.Variable 來(lái)定義參數(shù),則 Variable 自動(dòng)定義了兩個(gè)變量data代表原始權(quán)重?cái)?shù)據(jù);而 grad 代表求導(dǎo)后的數(shù)據(jù),也就是梯度。每次迭代過(guò)程就用這個(gè) grad 對(duì)權(quán)重?cái)?shù)據(jù)進(jìn)行修正。
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy

import torch
from torch.autograd import Variable
x = Variable(torch.ones(2, 2), requires_grad=True)
print(x)

??輸出為:
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy

y=x+2
print(y)

??輸出為:
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy

z = y * y * 3
out = z.mean()
print(z, out)

??輸出為:
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy

out.backward()

??反向傳播,也就是求導(dǎo)數(shù)的意思。輸出 out 對(duì) x 求導(dǎo):

print(x.grad)

[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??4.5 是怎么算出來(lái)的呢,從前面的公式可以看出 z=(x+2) * (x+2) * 3,它的導(dǎo)數(shù)是 3 * (x+2) / 2,當(dāng) x=1 時(shí)導(dǎo)數(shù)的值就是 3 * (1+2) / 2=4.5,和 pytorch 計(jì)算得出的結(jié)果是一致的。
??權(quán)值更新方法

weight = weight + learning_rate * gradient
learning_rate = 0.01
for f in model.parameters():
f.data.sub_(f.grad.data * learning_rate)

??learning_rate 是學(xué)習(xí)速率,多數(shù)時(shí)候就叫做 lr,是學(xué)習(xí)步長(zhǎng),用步長(zhǎng) * 導(dǎo)數(shù)就是每次權(quán)重修正的 delta 值lr 越大表示學(xué)習(xí)的速度越快,相應(yīng)的精度就會(huì)降低


五、損失函數(shù)

??損失函數(shù),又叫目標(biāo)函數(shù),是編譯一個(gè)神經(jīng)網(wǎng)絡(luò)模型必須的兩個(gè)參數(shù)之一。另一個(gè)必不可少的參數(shù)是優(yōu)化器。
??損失函數(shù)是指用于計(jì)算標(biāo)簽值和預(yù)測(cè)值之間差異的函數(shù),在機(jī)器學(xué)習(xí)過(guò)程中,有多種損失函數(shù)可供選擇,典型的有距離向量,絕對(duì)值向量等。
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??上圖是一個(gè)用來(lái)模擬線性方程自動(dòng)學(xué)習(xí)的示意圖。粗線是真實(shí)的線性方程,虛線是迭代過(guò)程的示意,w1 是第一次迭代的權(quán)重,w2 是第二次迭代的權(quán)重,w3 是第三次迭代的權(quán)重。隨著迭代次數(shù)的增加,我們的目標(biāo)是使得 wn 無(wú)限接近真實(shí)值。
??那么怎么讓 w 無(wú)限接近真實(shí)值呢?其實(shí)這就是損失函數(shù)和優(yōu)化器的作用了。圖中 1/2/3 這三個(gè)標(biāo)簽分別是 3 次迭代過(guò)程中預(yù)測(cè) Y 值和真實(shí) Y 值之間的差值(這里差值就是損失函數(shù)的意思了,當(dāng)然了,實(shí)際應(yīng)用中存在多種差值計(jì)算的公式),這里的差值示意圖上是用絕對(duì)差來(lái)表示的,那么在多維空間時(shí)還有平方差,均方差等多種不同的距離計(jì)算公式,也就是損失函數(shù)了。
??這里示意的是一維度方程的情況,擴(kuò)展到多維度,就是深度學(xué)習(xí)的本質(zhì)了。
??下面介紹幾種常見(jiàn)的損失函數(shù)的計(jì)算方法,pytorch 中定義了很多類型的預(yù)定義損失函數(shù),需要用到的時(shí)候再學(xué)習(xí)其公式也不遲。
??我們先定義兩個(gè)二維數(shù)組,然后用不同的損失函數(shù)計(jì)算其損失值。
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy

import torch
from torch.autograd import Variable
import torch.nn as nn
import torch.nn.functional as F
sample = Variable(torch.ones(2,2))
a=torch.Tensor(2,2)
a[0,0]=0
a[0,1]=1
a[1,0]=2
a[1,1]=3
target = Variable (a)

??sample 的值為:[[1,1],[1,1]]。
??target 的值為:[[0,1],[2,3]]。


5.1 nn.L1Loss

[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??L1Loss 計(jì)算方法很簡(jiǎn)單,取預(yù)測(cè)值和真實(shí)值的絕對(duì)誤差的平均數(shù)即可。

criterion = nn.L1Loss()
loss = criterion(sample, target)
print(loss)

[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??最后的結(jié)果為1,計(jì)算步驟為:
??先計(jì)算絕對(duì)差總和:|0-1|+|1-1|+|2-1|+|3-1|=4;
??然后再平均:4/4=1。


5.2 nn.SmoothL1Loss

??SmoothL1Loss 也叫作 Huber Loss,誤差在 (-1,1) 上是平方損失,其他情況是 L1 損失。
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy

criterion = nn.SmoothL1Loss()
loss = criterion(sample, target)
print(loss)

[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??最后結(jié)果是:0.625。


5.3 nn.MSELoss

??平方損失函數(shù)。其計(jì)算公式是預(yù)測(cè)值和真實(shí)值之間的平方和的平均數(shù)。
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy

criterion = nn.MSELoss()
loss = criterion(sample, target)
print(loss)

[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??最后結(jié)果是:1.5。


5.4 nn.BCELoss

??二分類用的交叉熵,其計(jì)算公式較復(fù)雜,這里主要是有個(gè)概念即可,一般情況下不會(huì)用到。
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy

criterion = nn.BCELoss()
loss = criterion(sample, target)
print(loss)

??最后結(jié)果是:-50。
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy


5.5 nn.CrossEntropyLoss

??交叉熵?fù)p失函數(shù)
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??該公式用的也較多,比如在圖像分類神經(jīng)網(wǎng)絡(luò)模型中就常常用到該公式

criterion = nn.CrossEntropyLoss()
loss = criterion(sample, target)
print(loss)

[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??最后結(jié)果是:2.0794。
??看文檔我們知道 nn.CrossEntropyLoss 損失函數(shù)是用于圖像識(shí)別驗(yàn)證的對(duì)輸入?yún)?shù)有各式要求,這里有這個(gè)概念就可以了,在后續(xù)的圖像識(shí)別方向中會(huì)有正確的使用方法。


5.6 nn.NLLLoss

??負(fù)對(duì)數(shù)似然損失函數(shù)(Negative Log Likelihood)
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??在前面接上一個(gè) LogSoftMax 層就等價(jià)于交叉熵?fù)p失了。注意這里的xlabel 和上個(gè)交叉熵?fù)p失里的不一樣,這里是經(jīng)過(guò) log 運(yùn)算后的數(shù)值。
??這個(gè)損失函數(shù)一般也是用在圖像識(shí)別模型上。

criterion = F.nll_loss()
loss = criterion(sample, target)
print(loss)
loss=F.nll_loss(sample,target)

??最后結(jié)果為報(bào)錯(cuò),看來(lái)不能直接調(diào)用。
??Nn.NLLLoss 和 nn.CrossEntropyLoss 的功能是非常相似的。通常都是用在多分類模型中,實(shí)際應(yīng)用中我們一般用 NLLLoss 比較多。
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy


5.7 nn.NLLLoss2d

??和上面類似,但是多了幾個(gè)維度,一般用在圖片上。

input, (N, C, H, W)
target, (N, H, W)

??比如用全卷積網(wǎng)絡(luò)做分類時(shí),最后圖片的每個(gè)點(diǎn)都會(huì)預(yù)測(cè)一個(gè)類別標(biāo)簽。
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??最后結(jié)果報(bào)錯(cuò),看來(lái)不能直接這么用。


六、優(yōu)化器Optim

??優(yōu)化器用通俗的話來(lái)說(shuō)就是一種算法,是一種計(jì)算導(dǎo)數(shù)的算法。
??各種優(yōu)化器的目的和發(fā)明它們的初衷其實(shí)就是能讓用戶選擇一種適合自己場(chǎng)景的優(yōu)化器
??優(yōu)化器的最主要的衡量指標(biāo)就是優(yōu)化曲線的平穩(wěn)度,最好的優(yōu)化器就是每一輪樣本數(shù)據(jù)的優(yōu)化都讓權(quán)重參數(shù)勻速的接近目標(biāo)值,而不是忽上忽下跳躍的變化。因此損失值的平穩(wěn)下降對(duì)于一個(gè)深度學(xué)習(xí)模型來(lái)說(shuō)是一個(gè)非常重要的衡量指標(biāo)。
??pytorch 的優(yōu)化器都放在 torch.optim 包中。常見(jiàn)的優(yōu)化器有:SGD,Adam,Adadelta,Adagrad,Adamax 等。如果需要定制特殊的優(yōu)化器,pytorch 也提供了定制化的手段,不過(guò)這里我們就不去深究了,畢竟預(yù)留的優(yōu)化器的功能已經(jīng)足夠強(qiáng)大了。


?6.1 SGD

??SGD 指stochastic gradient descent,即隨機(jī)梯度下降,隨機(jī)的意思是隨機(jī)選取部分?jǐn)?shù)據(jù)集參與計(jì)算,是梯度下降的 batch 版本。SGD 支持動(dòng)量參數(shù),支持學(xué)習(xí)衰減率。SGD 優(yōu)化器也是最常見(jiàn)的一種優(yōu)化器,實(shí)現(xiàn)簡(jiǎn)單,容易理解。

??6.1.1 用法

optimizer = optim.SGD(model.parameters(), lr = 0.01, momentum=0.9)

??6.1.2 參數(shù)

??lr:大于 0 的浮點(diǎn)數(shù),學(xué)習(xí)率。
??momentum:大于 0 的浮點(diǎn)數(shù),動(dòng)量參數(shù)。
??parameters:Variable 參數(shù),要優(yōu)化的對(duì)象。

??對(duì)于訓(xùn)練數(shù)據(jù)集,我們首先將其分成 n 個(gè) batch,每個(gè) batch 包含 m 個(gè)樣本。我們每次更新都利用一個(gè) batch 的數(shù)據(jù) ,而非整個(gè)訓(xùn)練集,即:

??xt+1=xt+Δxt
??Δxt=-ηgt

??其中,η 為學(xué)習(xí)率,gt 為 x 在 t 時(shí)刻的梯度。

??6.1.3 好處

??這么做的好處在于:
??(1)當(dāng)訓(xùn)練數(shù)據(jù)太多時(shí),利用整個(gè)數(shù)據(jù)集更新往往時(shí)間上不現(xiàn)實(shí)。batch的方法可以減少機(jī)器的壓力,并且可以更快地收斂。
??(2)當(dāng)訓(xùn)練集有很多冗余時(shí)(類似的樣本出現(xiàn)多次),batch 方法收斂更快。以一個(gè)極端情況為例,若訓(xùn)練集前一半和后一半梯度相同,那么如果前一半作為一個(gè) batch,后一半作為另一個(gè) batch,那么在一次遍歷訓(xùn)練集時(shí),batch 的方法向最優(yōu)解前進(jìn)兩個(gè) step,而整體的方法只前進(jìn)一個(gè) step


6.2 RMSprop

??RMSProp 通過(guò)引入一個(gè)衰減系數(shù),讓 r 每回合都衰減一定比例類似于Momentum 中的做法,該優(yōu)化器通常是面對(duì)遞歸神經(jīng)網(wǎng)絡(luò)時(shí)的一個(gè)良好選擇。

??6.2.1 具體實(shí)現(xiàn)

??需要:全局學(xué)習(xí)速率 ?,初始參數(shù) θ,數(shù)值穩(wěn)定量 δ,衰減速率 ρ。
??中間變量:梯度累計(jì)量 r(初始化為 0)

??6.2.2 每步迭代過(guò)程

??(1)從訓(xùn)練集中的隨機(jī)抽取一批容量為 m 的樣本 {x1,…,xm} 以及相關(guān)的輸出 yi 。
??(2)計(jì)算梯度和誤差更新 r,再根據(jù) r 和梯度計(jì)算參數(shù)更新量
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy

??6.2.3 用法

keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-06)

??6.2.4 參數(shù)

??lr:大于 0 的浮點(diǎn)數(shù),學(xué)習(xí)率。
??rho:大于 0 的浮點(diǎn)數(shù)。
??epsilon:大于 0 的小浮點(diǎn)數(shù),防止除 0 錯(cuò)誤。


6.3 Adagrad

??AdaGrad 可以自動(dòng)變更學(xué)習(xí)速率,只是需要設(shè)定一個(gè)全局的學(xué)習(xí)速率 ?,但是這并非是實(shí)際學(xué)習(xí)速率,實(shí)際的速率是與以往參數(shù)的模之和的開(kāi)方成反比的。也許說(shuō)起來(lái)有點(diǎn)繞口,不過(guò)用公式來(lái)表示就直白的多:
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??其中 δ 是一個(gè)很小的常量,大概在 10-7,防止出現(xiàn)除以 0 的情況.。

??6.3.1 具體實(shí)現(xiàn)

??需要:全局學(xué)習(xí)速率 ?,初始參數(shù) θ,數(shù)值穩(wěn)定量 δ 。
??中間變量:梯度累計(jì)量 r(初始化為 0)

??6.3.2 每步迭代過(guò)程

??(1) 從訓(xùn)練集中的隨機(jī)抽取一批容量為 m 的樣本 {x1,…,xm} 以及相關(guān)。
??(2)計(jì)算梯度和誤差,更新r,再根據(jù) r 和梯度計(jì)算參數(shù)更新量 。
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy

??6.3.3 優(yōu)點(diǎn)

??能夠實(shí)現(xiàn)學(xué)習(xí)率的自動(dòng)更改。如果這次梯度大,那么學(xué)習(xí)速率衰減的就快一些;如果這次梯度小,那么學(xué)習(xí)速率衰減的就慢一些。

??6.3.4 缺點(diǎn)

??仍然要設(shè)置一個(gè)變量 ? 。
??經(jīng)驗(yàn)表明,在普通算法中也許效果不錯(cuò),但在深度學(xué)習(xí)中,深度過(guò)深時(shí)會(huì)造成訓(xùn)練提前結(jié)束。

??6.3.5 用法

keras.optimizers.Adagrad(lr=0.01, epsilon=1e-06)

??6.3.6 參數(shù)

??lr:大于 0 的浮點(diǎn)數(shù),學(xué)習(xí)率。
??epsilon:大于 0 的小浮點(diǎn)數(shù),防止除 0 錯(cuò)誤。


6.4 Adadelta

??Adagrad 算法存在三個(gè)問(wèn)題:
??(1)其學(xué)習(xí)率是單調(diào)遞減的,訓(xùn)練后期學(xué)習(xí)率非常小。
??(2)其需要手工設(shè)置一個(gè)全局的初始學(xué)習(xí)率。
??(3)更新 xt 時(shí),左右兩邊的單位不統(tǒng)一。

??Adadelta 針對(duì)上述三個(gè)問(wèn)題提出了比較漂亮的解決方案。
??首先,針對(duì)第一個(gè)問(wèn)題,我們可以只使用 adagrad 的分母中的累計(jì)項(xiàng)離當(dāng)前時(shí)間點(diǎn)比較近的項(xiàng),如下式:
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??這里ρ 是衰減系數(shù) ,通過(guò)這個(gè)衰減系數(shù),我們令每一個(gè)時(shí)刻的 gt 隨時(shí)間按照 ρ 指數(shù)衰減,這樣就相當(dāng)于我們僅使用離當(dāng)前時(shí)刻比較近的gt信息,從而使得還很長(zhǎng)時(shí)間之后,參數(shù)仍然可以得到更新。
??針對(duì)第三個(gè)問(wèn)題,其實(shí) sgd 跟 momentum 系列的方法也有單位不統(tǒng)一的問(wèn)題。sgd、momentum 系列方法中:
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??類似的,adagrad 中,用于更新 Δx 的單位也不是 x 的單位,而是 1。
??而對(duì)于牛頓迭代法
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??其中 H 為 Hessian 矩陣,由于其計(jì)算量巨大,因而實(shí)際中不常使用。其單位為:
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??注意,這里f 無(wú)單位 。因而,牛頓迭代法的單位是正確的。
??所以,我們可以模擬牛頓迭代法來(lái)得到正確的單位。注意到:
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??這里,在解決學(xué)習(xí)率單調(diào)遞減的問(wèn)題的方案中,分母已經(jīng)是 ?f/?x 的一個(gè)近似了。這里我們可以構(gòu)造 Δx 的近似,來(lái)模擬得到 H-1 的近似從而得到近似的牛頓迭代法。具體做法如下:
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy
??可以看到,如此一來(lái)adagrad 中分子部分需要人工設(shè)置的初始學(xué)習(xí)率也消失了 ,從而順帶解決了上述的第二個(gè)問(wèn)題。

??6.4.1 用法

keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-06)

建議保持優(yōu)化器的默認(rèn)參數(shù)不變。

??6.4.2 參數(shù)

??lr:大于 0 的浮點(diǎn)數(shù),學(xué)習(xí)率。
??rho:大于 0 的浮點(diǎn)數(shù)。
??epsilon:大于 0 的小浮點(diǎn)數(shù),防止除 0 錯(cuò)誤。


6.5 Adam

??Adam 是一種基于一階梯度來(lái)優(yōu)化隨機(jī)目標(biāo)函數(shù)的算法
??Adam 這個(gè)名字來(lái)源于 adaptive moment estimation,自適應(yīng)矩估計(jì)。概率論中矩的含義是:如果一個(gè)隨機(jī)變量 X 服從某個(gè)分布,X 的一階矩是E(X),也就是樣本平均值,X 的二階矩就是 E(X^2),也就是樣本平方的平均值。
??Adam 算法根據(jù)損失函數(shù)對(duì)每個(gè)參數(shù)的梯度的一階矩估計(jì)和二階矩估計(jì)動(dòng)態(tài)調(diào)整針對(duì)于每個(gè)參數(shù)的學(xué)習(xí)速率。Adam 也是基于梯度下降的方法,但是每次迭代參數(shù)的學(xué)習(xí)步長(zhǎng)都有一個(gè)確定的范圍,不會(huì)因?yàn)楹艽蟮奶荻葘?dǎo)致很大的學(xué)習(xí)步長(zhǎng),參數(shù)的值比較穩(wěn)定。
??Adam(Adaptive Moment Estimation)本質(zhì)上是帶有動(dòng)量項(xiàng)的 RMSprop,它利用梯度的一階矩估計(jì)和二階矩估計(jì)動(dòng)態(tài)調(diào)整每個(gè)參數(shù)的學(xué)習(xí)率。Adam 的優(yōu)點(diǎn)主要在于經(jīng)過(guò)偏置校正后,每一次迭代學(xué)習(xí)率都有個(gè)確定范圍,使得參數(shù)比較平穩(wěn)

6.5.1 具體實(shí)現(xiàn)

??需要:步進(jìn)值 ?,初始參數(shù) θ,數(shù)值穩(wěn)定量 δ,一階動(dòng)量衰減系數(shù) ρ1,二階動(dòng)量衰減系數(shù) ρ2 。
??其中幾個(gè)取值一般為:δ=10-8,ρ1=0.9,ρ2=0.999 。
??中間變量:一階動(dòng)量 s,二階動(dòng)量 r,都初始化為 0 。

6.5.2 每步迭代過(guò)程

??(1)從訓(xùn)練集中的隨機(jī)抽取一批容量為 m 的樣本 {x1,…,xm} 以及相關(guān)的輸出 yi
??(2)計(jì)算梯度和誤差,更新 r 和 s,再根據(jù) r 和 s 以及梯度計(jì)算參數(shù)更新量 。
[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器],人工智能,深度學(xué)習(xí),pytorch,人工智能,機(jī)器學(xué)習(xí),python,神經(jīng)網(wǎng)絡(luò),numpy

??6.5.3 用法

keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08)

??6.5.4 參數(shù)

??lr:大于 0 的浮點(diǎn)數(shù),學(xué)習(xí)率。
??beta_1/beta_2:浮點(diǎn)數(shù), 0<beta<1,通常很接近 1。
??epsilon:大于 0 的小浮點(diǎn)數(shù),防止除0錯(cuò)誤。


6.6 Adamax

keras.optimizers.Adamax(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=1e-08)

??Adamax 優(yōu)化器的方法是基于無(wú)窮范數(shù)的 Adam 方法的變體。

??6.6.1 參數(shù)

??lr:大于 0 的浮點(diǎn)數(shù),學(xué)習(xí)率。
??beta_1/beta_2:浮點(diǎn)數(shù), 0<beta<1,通常很接近 1。
??epsilon:大于 0 的小浮點(diǎn)數(shù),防止除 0 錯(cuò)誤。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-581963.html

到了這里,關(guān)于[深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(上)[變量、求導(dǎo)、損失函數(shù)、優(yōu)化器]的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【深度學(xué)習(xí)所有損失函數(shù)】在 NumPy、TensorFlow 和 PyTorch 中實(shí)現(xiàn)(2/2)

    在本文中,討論了深度學(xué)習(xí)中使用的所有常見(jiàn)損失函數(shù),并在NumPy,PyTorch和TensorFlow中實(shí)現(xiàn)了它們。 ????????稀疏分類交叉熵?fù)p失類似于分類交叉熵?fù)p失,但在真實(shí)標(biāo)簽作為整數(shù)而不是獨(dú)熱編碼提供時(shí)使用。它通常用作多類分類問(wèn)題中的損失函數(shù)。 稀疏分類交叉熵?fù)p失的公

    2024年02月13日
    瀏覽(31)
  • PyTorch深度學(xué)習(xí)實(shí)戰(zhàn) | 基于深度學(xué)習(xí)的電影票房預(yù)測(cè)研究

    PyTorch深度學(xué)習(xí)實(shí)戰(zhàn) | 基于深度學(xué)習(xí)的電影票房預(yù)測(cè)研究

    基于深度學(xué)習(xí)的映前票房預(yù)測(cè)模型(CrossDense網(wǎng)絡(luò)結(jié)構(gòu)模型),該模型通過(guò)影片基本信息如:電影類型、影片制式、檔期和電影的主創(chuàng)陣容和IP特征等信息對(duì)上映影片的票房進(jìn)行預(yù)測(cè)。 本篇采用451部電影作為訓(xùn)練模型,最后再在194部影片上進(jìn)行測(cè)試,模型的絕對(duì)精度為55%,相對(duì)精

    2023年04月24日
    瀏覽(25)
  • [深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(下)[Mnist手寫(xiě)數(shù)字圖像識(shí)別]

    [深度學(xué)習(xí)實(shí)戰(zhàn)]基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)(下)[Mnist手寫(xiě)數(shù)字圖像識(shí)別]

    PyTorch——開(kāi)源的Python機(jī)器學(xué)習(xí)庫(kù) ??首先感謝所有點(diǎn)開(kāi)本文的朋友們!基于PyTorch的深度學(xué)習(xí)實(shí)戰(zhàn)可能要告一段落了。本想著再寫(xiě)幾篇關(guān)于 PyTorch神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí) 的文章來(lái)著,可無(wú)奈項(xiàng)目時(shí)間緊任務(wù)重,要求 短時(shí)間內(nèi)出圖并做好參數(shù)擬合 。所以只得轉(zhuǎn)戰(zhàn) Matlab 編程,框架舊

    2024年02月16日
    瀏覽(29)
  • PyTorch 深度學(xué)習(xí)實(shí)戰(zhàn) | 基于 ResNet 的花卉圖片分類

    PyTorch 深度學(xué)習(xí)實(shí)戰(zhàn) | 基于 ResNet 的花卉圖片分類

    “工欲善其事,必先利其器”。如果直接使用 Python 完成模型的構(gòu)建、導(dǎo)出等工作,勢(shì)必會(huì)耗費(fèi)相當(dāng)多的時(shí)間,而且大部分工作都是深度學(xué)習(xí)中共同擁有的部分,即重復(fù)工作。所以本案例為了快速實(shí)現(xiàn)效果,就直接使用將這些共有部分整理成框架的 TensorFlow 和 Keras 來(lái)完成開(kāi)發(fā)

    2023年04月09日
    瀏覽(89)
  • PyTorch 深度學(xué)習(xí)實(shí)戰(zhàn) | 基于生成式對(duì)抗網(wǎng)絡(luò)生成動(dòng)漫人物

    PyTorch 深度學(xué)習(xí)實(shí)戰(zhàn) | 基于生成式對(duì)抗網(wǎng)絡(luò)生成動(dòng)漫人物

    生成式對(duì)抗網(wǎng)絡(luò)(Generative Adversarial Network, GAN)是近些年計(jì)算機(jī)視覺(jué)領(lǐng)域非常常見(jiàn)的一類方法,其強(qiáng)大的從已有數(shù)據(jù)集中生成新數(shù)據(jù)的能力令人驚嘆,甚至連人眼都無(wú)法進(jìn)行分辨。本文將會(huì)介紹基于最原始的DCGAN的動(dòng)漫人物生成任務(wù),通過(guò)定義生成器和判別器,并讓這兩個(gè)網(wǎng)絡(luò)

    2023年04月17日
    瀏覽(46)
  • 【深度學(xué)習(xí)】損失函數(shù)詳解

    【深度學(xué)習(xí)】損失函數(shù)詳解

    在機(jī)器學(xué)習(xí)中,損失函數(shù)是代價(jià)函數(shù)的一部分,而代價(jià)函數(shù)則是目標(biāo)函數(shù)的一種類型。 損失函數(shù)(Loss Function): 用于定義單個(gè)訓(xùn)練樣本與真實(shí)值之間的誤差; 代價(jià)函數(shù)(Cost Function): 用于定義單個(gè)批次/整個(gè)訓(xùn)練集樣本與真實(shí)值之間的誤差; 目標(biāo)函數(shù)(Objective Function): 泛指任意可

    2024年02月02日
    瀏覽(24)
  • 【深度學(xué)習(xí)】分類損失函數(shù)解析

    【深度學(xué)習(xí)】分類損失函數(shù)解析

    在分類任務(wù)中,我們通常使用各種損失函數(shù)來(lái)衡量模型輸出與真實(shí)標(biāo)簽之間的差異。有時(shí)候搞不清楚用什么,下面是幾種常見(jiàn)的分類相關(guān)損失函數(shù)及其 解析,與代碼示例 。 二元交叉熵?fù)p失(Binary Cross Entropy Loss,BCELoss): torch.nn.BCELoss() 是用于二元分類的損失函數(shù)。它將模型

    2024年02月09日
    瀏覽(23)
  • 【深度學(xué)習(xí)】002-損失函數(shù):MSE、交叉熵、鉸鏈損失函數(shù)(Hinge Loss)

    【深度學(xué)習(xí)】002-損失函數(shù):MSE、交叉熵、鉸鏈損失函數(shù)(Hinge Loss)

    目錄 前言 一、均方誤差損失函數(shù)(The Mean-Squared Loss) ??????1.1、從線性回歸模型導(dǎo)出均方誤差函數(shù) ??????1.2、均方誤差函數(shù)的使用場(chǎng)景 ??????1.3、均方誤差函數(shù)的一些討論 2、交叉熵?fù)p失函數(shù)(The Cross-Entropy Loss) ? ? ? 2.1、從softmax運(yùn)算到交叉熵 ? ? ? 2.2、信息論

    2024年02月05日
    瀏覽(17)
  • 深度學(xué)習(xí)快速入門系列---損失函數(shù)

    深度學(xué)習(xí)快速入門系列---損失函數(shù)

    在深度學(xué)習(xí)中,損失函數(shù)的作用是量化預(yù)測(cè)值和真實(shí)值之間的差異,使得網(wǎng)絡(luò)模型可以朝著真實(shí)值的方向預(yù)測(cè),損失函數(shù)通過(guò)衡量模型預(yù)測(cè)結(jié)果與真實(shí)標(biāo)簽之間的差異,反映模型的性能。同時(shí)損失函數(shù)作為一個(gè)可優(yōu)化的目標(biāo)函數(shù),通過(guò)最小化損失函數(shù)來(lái)優(yōu)化模型參數(shù)。在本篇

    2024年02月12日
    瀏覽(24)
  • 深度學(xué)習(xí)中常用的損失函數(shù)(一) —— MSELoss()

    深度學(xué)習(xí)中常用的損失函數(shù)(一) —— MSELoss()

    ? ? ? ? 該函數(shù)叫做平均平方誤差,簡(jiǎn)稱均方誤差。它的英文名是mean squared error,該損失函數(shù)是挨個(gè)元素計(jì)算的。該元素的公式如下: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 其連個(gè)輸入?yún)?shù),第一個(gè)參數(shù)是輸出的參數(shù),第二個(gè)參數(shù)是與之對(duì)比的參數(shù)。 ? ? ? ?loss= torch.nn.MSE

    2024年02月12日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包