




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
簡(jiǎn)單全連接網(wǎng)絡(luò)的手寫數(shù)字識(shí)別第三章01了解全連接神經(jīng)網(wǎng)絡(luò)的發(fā)展歷程02掌握感知機(jī)模型和多層感知機(jī)的結(jié)構(gòu)03
掌握不同激活函數(shù)的定義與區(qū)別04掌握反向傳播算法的原理、梯度下降法學(xué)習(xí)目標(biāo)CONTENTS05能使用神經(jīng)網(wǎng)絡(luò)模型實(shí)現(xiàn)手寫數(shù)字識(shí)別01使用神經(jīng)網(wǎng)絡(luò)知識(shí)分析問題和解決問題02能主動(dòng)獲取最新的研究成果和技術(shù)發(fā)展03提高問題分析和解決問題的能力04
培養(yǎng)團(tuán)隊(duì)合作和溝通能力素質(zhì)目標(biāo)CONTENTS模型訓(xùn)練模型測(cè)試與評(píng)估實(shí)踐任務(wù)全連接神經(jīng)網(wǎng)絡(luò)模型搭建手寫數(shù)字?jǐn)?shù)據(jù)集處理第一節(jié)
手寫數(shù)字識(shí)別任務(wù)介紹業(yè)務(wù)場(chǎng)景與需求當(dāng)我們?cè)阢y行辦理業(yè)務(wù)時(shí),可能會(huì)遇到需要填寫支票或匯票的情況。然而,由于手寫的支票和匯票存在著字跡不清晰、寫錯(cuò)數(shù)字等問題,導(dǎo)致銀行工作人員需要花費(fèi)大量的時(shí)間來(lái)進(jìn)行人工識(shí)別和分類,同時(shí)還可能產(chǎn)生錯(cuò)誤。為了解決這個(gè)問題,這時(shí)需要設(shè)計(jì)并實(shí)現(xiàn)一個(gè)手寫數(shù)字識(shí)別模型,以滿足系統(tǒng)對(duì)于支票、匯票等的自動(dòng)分類需求,銀行可以采用自動(dòng)化的手寫數(shù)字識(shí)別技術(shù),通過計(jì)算機(jī)程序來(lái)自動(dòng)識(shí)別和分類手寫數(shù)字,提高業(yè)務(wù)效率和準(zhǔn)確率。
手寫數(shù)字識(shí)別任務(wù)介紹技術(shù)分析手寫數(shù)字識(shí)別是一個(gè)典型的圖像分類問題。在傳統(tǒng)的方法中,我們需要對(duì)數(shù)字圖像進(jìn)行特征提取,并使用分類器對(duì)提取的特征進(jìn)行分類。然而,這種方法存在著對(duì)特征提取的高要求和對(duì)分類器的復(fù)雜性要求較高等問題。相比之下,神經(jīng)網(wǎng)絡(luò)模型可以直接從原始數(shù)據(jù)中學(xué)習(xí)特征,并通過反向傳播算法優(yōu)化模型參數(shù),從而實(shí)現(xiàn)高效準(zhǔn)確的分類。
手寫數(shù)字識(shí)別任務(wù)介紹技術(shù)分析全連接網(wǎng)絡(luò)是基礎(chǔ)的神經(jīng)網(wǎng)絡(luò)模型之一,它由輸入層、隱藏層和輸出層構(gòu)成。輸入層接收原始的圖像數(shù)據(jù),并將其轉(zhuǎn)化為網(wǎng)絡(luò)可處理的形式,隱藏層通過一系列的線性變換和非線性變換對(duì)數(shù)據(jù)進(jìn)行特征提取,輸出層則將提取的特征與目標(biāo)標(biāo)簽進(jìn)行匹配和分類。
手寫數(shù)字識(shí)別任務(wù)介紹全連接網(wǎng)絡(luò)的訓(xùn)練過程通常采用梯度下降算法,即通過最小化損失函數(shù)來(lái)優(yōu)化模型參數(shù),從而實(shí)現(xiàn)分類的準(zhǔn)確性。
手寫數(shù)字識(shí)別任務(wù)介紹過擬合是指機(jī)器學(xué)習(xí)模型在訓(xùn)練數(shù)據(jù)上表現(xiàn)很好,但在新數(shù)據(jù)上表現(xiàn)不佳的現(xiàn)象。簡(jiǎn)單來(lái)說(shuō),就是模型過于依賴于訓(xùn)練數(shù)據(jù),無(wú)法很好地泛化到新數(shù)據(jù)。
手寫數(shù)字識(shí)別任務(wù)介紹
過擬合的解決方法包括:增加更多的訓(xùn)練數(shù)據(jù)、減少模型的復(fù)雜度、使用正則化等方法。這些方法的本質(zhì)是讓模型更好地理解數(shù)據(jù)的本質(zhì)規(guī)律,而不是過分依賴于訓(xùn)練數(shù)據(jù)的細(xì)節(jié)。手寫數(shù)字識(shí)別任務(wù)介紹總之,全連接網(wǎng)絡(luò)是一種簡(jiǎn)單而有效的神經(jīng)網(wǎng)絡(luò)模型,能夠解決手寫數(shù)字識(shí)別等圖像分類問題。手寫數(shù)字識(shí)別實(shí)現(xiàn)過程如下:
第二節(jié)
神經(jīng)網(wǎng)絡(luò)搭建
前向傳播算法前向傳播的介紹前向傳播(ForwardPropagation)算法是指神經(jīng)網(wǎng)絡(luò)向前計(jì)算的過程。前向傳播算法需要神經(jīng)網(wǎng)絡(luò)的輸入、神經(jīng)網(wǎng)絡(luò)的連接結(jié)構(gòu),以及每個(gè)神經(jīng)元中的參數(shù)。如圖所示為一個(gè)兩層神經(jīng)網(wǎng)絡(luò),假設(shè)x1和x2是成績(jī)分類的兩個(gè)指標(biāo),經(jīng)過該神經(jīng)網(wǎng)絡(luò)計(jì)算后,從y輸出成績(jī)的類別。前向傳播算法(1)為了確認(rèn)前面的內(nèi)容,現(xiàn)在用數(shù)學(xué)式表示a1(1),通過加權(quán)信號(hào)和偏置的和按如下方式進(jìn)行計(jì)算:此外,如果使用矩陣的乘法運(yùn)算,則可以將第1層的加權(quán)和表示成下面的式子:(2)隱藏層的加權(quán)和(加權(quán)信號(hào)和偏置的總和)用a表示,被激活函數(shù)轉(zhuǎn)換后的信號(hào)用z表示。這里我們使用的是sigmoid函數(shù)。代碼如下:Z1=sigmoid(A1)前向傳播算法輸出層所用的激活函數(shù),要根據(jù)求解問題的性質(zhì)決定。一般地,回歸問題可以使用恒等函數(shù),二元分類問題可以使用sigmoid函數(shù),多元分類問題可以使用softmax函數(shù)。在實(shí)際建模解成績(jī)及格分類預(yù)測(cè)問題時(shí),首先隨機(jī)初始化網(wǎng)絡(luò)模型的權(quán)重和偏置參數(shù),然后每次用訓(xùn)練數(shù)據(jù)計(jì)算得到一個(gè)預(yù)測(cè)值,接下來(lái)將預(yù)測(cè)值步與真實(shí)值y比較,如果相差較大,則通過反向傳播算法調(diào)整參數(shù)的取值,以達(dá)到優(yōu)化網(wǎng)絡(luò)的目的。第二節(jié)激活函數(shù)的含義激活函數(shù)Sigmoid函數(shù)神經(jīng)網(wǎng)絡(luò)中經(jīng)常使用的一個(gè)激活函數(shù)就是如圖表示的sigmoid函數(shù)(sigmoidfunction)。圖中的exp(?x)表示??x的意思。e是納皮爾常數(shù)2.7182…。該式子表示的的sigmoid函數(shù)看上去有些復(fù)雜,但它也僅僅是個(gè)函數(shù)而已。而函數(shù)就是給定某個(gè)輸入后,會(huì)返回某個(gè)輸出的轉(zhuǎn)換器。神經(jīng)網(wǎng)絡(luò)中用sigmoid函數(shù)作為激活函數(shù),進(jìn)行信號(hào)的轉(zhuǎn)換,轉(zhuǎn)換后的信號(hào)被傳送給下一個(gè)神經(jīng)元。激活函數(shù)ReLU函數(shù)在神經(jīng)網(wǎng)絡(luò)發(fā)展的歷史上,sigmoid函數(shù)很早就開始被使用了,而最近則主要使用ReLU
(RectifiedLinearUnit)函數(shù)。激活函數(shù)ReLU函數(shù)ReLU(RectifiedLinearUnit)是一種常用的神經(jīng)網(wǎng)絡(luò)激活函數(shù),具有以下優(yōu)點(diǎn)計(jì)算速度快:ReLU函數(shù)的計(jì)算非常簡(jiǎn)單,只需要判斷輸入是否大于0,因此計(jì)算速度非??臁J諗克俣瓤欤篟eLU函數(shù)在非負(fù)區(qū)間內(nèi)斜率為1,因此當(dāng)輸入大于0時(shí),梯度不會(huì)變得特別小,這有助于避免梯度消失問題,提高網(wǎng)絡(luò)的訓(xùn)練速度和穩(wěn)定性。非線性:ReLU函數(shù)在輸入大于0時(shí)是線性的,在輸入小于等于0時(shí)是非線性的,因此可以幫助神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)非線性的特征。激活函數(shù)Tanh函數(shù)Tanh函數(shù)激活函數(shù)Tanh函數(shù)優(yōu)點(diǎn):有助于減緩梯度的消失問題,提高模型的訓(xùn)練效果。缺點(diǎn):它的輸出范圍為[-1,1],因此需要對(duì)輸入數(shù)據(jù)進(jìn)行歸一化,避免輸出值過大或過小。激活函數(shù)Softmax函數(shù)Softmax是常用且重要的一種歸一化函數(shù),其將輸入值映射為0-1之間的概率實(shí)數(shù),常用于多分類。激活函數(shù)Softmax函數(shù)Softmax函數(shù)的優(yōu)點(diǎn)包括:1.輸出結(jié)果可解釋性強(qiáng),可以表示不同類別的概率分布。2.可以使用交叉熵?fù)p失函數(shù)來(lái)訓(xùn)練分類模型,簡(jiǎn)化模型訓(xùn)練過程。3.Softmax函數(shù)具有平移不變性,即在輸入向量的每個(gè)元素上加上或減去一個(gè)常數(shù),Softmax函數(shù)的輸出不會(huì)改變。第四節(jié)
實(shí)踐任務(wù)-手寫數(shù)字識(shí)別神經(jīng)網(wǎng)絡(luò)的訓(xùn)練介紹神經(jīng)網(wǎng)絡(luò)的訓(xùn)練是指從訓(xùn)練數(shù)據(jù)中自動(dòng)獲取最優(yōu)權(quán)重參數(shù)的過程,通常分為兩個(gè)階段:第1階段先通過前向傳播算法計(jì)算得到預(yù)測(cè)值,并計(jì)算預(yù)測(cè)值與真實(shí)值之間的差距(該差距也稱為損失函數(shù));第2階段通過反向傳播算法計(jì)算損失函數(shù)對(duì)每一個(gè)參數(shù)的梯度,使用合適的梯度下降算法對(duì)參數(shù)進(jìn)行更新。
第四節(jié)
實(shí)踐任務(wù)-手寫數(shù)字識(shí)別神經(jīng)網(wǎng)絡(luò)的訓(xùn)練介紹神經(jīng)網(wǎng)絡(luò)的訓(xùn)練以及參數(shù)更新的全部過程,如圖表示。
實(shí)踐任務(wù)1-數(shù)據(jù)處理1數(shù)據(jù)集介紹手寫數(shù)字識(shí)別采用MNIST數(shù)據(jù)集進(jìn)行訓(xùn)練,MNIST是有YannLeCun等創(chuàng)建的手寫數(shù)字識(shí)別數(shù)據(jù)集,簡(jiǎn)單易用,通過對(duì)該數(shù)據(jù)集可以很好地進(jìn)行手寫數(shù)字識(shí)別神經(jīng)網(wǎng)絡(luò)建模。MINIST數(shù)據(jù)集主要是有一些手寫的數(shù)字的圖片及對(duì)應(yīng)的標(biāo)簽,該數(shù)據(jù)集的圖片共有10類,對(duì)應(yīng)的阿拉伯?dāng)?shù)字為0~9,如圖表示。
實(shí)踐任務(wù)1-數(shù)據(jù)處理1數(shù)據(jù)集介紹在MINIST數(shù)據(jù)集介紹的官網(wǎng)(/exdb/mnist/)中可知,原始的MNIST數(shù)據(jù)集共包含4個(gè)文件,如圖表示。
文件名大小用途train-images-idx3-ubyte.gz9912422bytes訓(xùn)練集圖像train-labels-idx1-ubyte.gz28881bytes訓(xùn)練集標(biāo)簽t10k-images-idx3-ubyte.gz1648877bytes測(cè)試集圖像t10k-labels-idx1-ubyte.gz4542bytes測(cè)試集標(biāo)簽實(shí)踐任務(wù)1-MNIST數(shù)據(jù)處理2導(dǎo)入數(shù)據(jù)集
在PyTorch中,有一個(gè)非常重要并且好用的包是torchvision,該包主要由3個(gè)子包組成,分別是models、datasets和transforms。
models定義了許多用來(lái)完成圖像方面深度學(xué)習(xí)的任務(wù)模型。
datasets中包含MINIST、FakeData、COCO、LSUN、ImageFolder、DatasetFolder、ImageNet、CIFAR等一些常用的數(shù)據(jù)集,并且提供了數(shù)據(jù)集設(shè)置的一些重要參數(shù),可以通過簡(jiǎn)單數(shù)據(jù)集設(shè)置來(lái)進(jìn)行數(shù)據(jù)集的調(diào)用。
transforms用來(lái)對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,預(yù)處理會(huì)加快神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,常見的預(yù)處理包括從數(shù)組轉(zhuǎn)成張量(tensor)、歸一化等。
實(shí)踐任務(wù)1-MNIST數(shù)據(jù)處理2導(dǎo)入數(shù)據(jù)集importnumpyasnp
importtorch
fromtorchvisionimportdatasets,transforms
importmatplotlib.pyplotasplt
importtorchvision導(dǎo)入所需要的python包:實(shí)踐任務(wù)1-MNIST數(shù)據(jù)處理2導(dǎo)入數(shù)據(jù)集導(dǎo)入MNIST訓(xùn)練集數(shù)據(jù):#1導(dǎo)入數(shù)據(jù)集
train_loader=torch.utils.data.DataLoader(
datasets.MNIST(root='./data',#root表示數(shù)據(jù)加載的相對(duì)目錄
train=True,#train表示是否加載數(shù)據(jù)庫(kù)的訓(xùn)練集,F(xiàn)alse時(shí)加載測(cè)試集
download=True,#download表示是否自動(dòng)下載
transform=transforms.Compose([#transform表示對(duì)數(shù)據(jù)進(jìn)行預(yù)處理的操作
transforms.ToTensor(),
transforms.Normalize((0.1307,),(0.3081,))
])),batch_size=64,shuffle=True)#batch_size表示該批次的數(shù)據(jù)量shuffle表示是否洗牌實(shí)踐任務(wù)1-MNIST數(shù)據(jù)處理2導(dǎo)入數(shù)據(jù)集導(dǎo)入MNIST測(cè)試集數(shù)據(jù):test_loader=torch.utils.data.DataLoader(
datasets.MNIST('./data',train=False,transform=transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.1307,),(0.3081,))
])),batch_size=64,shuffle=True)實(shí)踐任務(wù)1-MNIST數(shù)據(jù)處理2導(dǎo)入數(shù)據(jù)集數(shù)據(jù)可視化:defimshow(img):
img=img/2+0.5#逆歸一化
npimg=img.numpy()
plt.imshow(np.transpose(npimg,(1,2,0)))
plt.show()
#得到batch中的數(shù)據(jù)
dataiter=iter(train_loader)
images,labels=dataiter.next()
#展示圖片
imshow(torchvision.utils.make_grid(images))實(shí)踐任務(wù)1-MNIST數(shù)據(jù)處理2導(dǎo)入數(shù)據(jù)集數(shù)據(jù)可視化:實(shí)踐任務(wù)2-全連接神經(jīng)網(wǎng)絡(luò)模型搭建1定義全連接神經(jīng)網(wǎng)絡(luò)
在PyTorch中,
torch.nn是專門為神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的模塊化接口,,可以用于定義和運(yùn)行神經(jīng)網(wǎng)絡(luò)。
nn.Module是nn庫(kù)中十分重要的類,它包含網(wǎng)絡(luò)各層的定義以及forward函數(shù)。
只要在nn.Module的子類中定義forward函數(shù),backward函數(shù)就會(huì)被自動(dòng)實(shí)現(xiàn)(利用autograd)。
實(shí)踐任務(wù)2-全連接神經(jīng)網(wǎng)絡(luò)模型搭建1定義全連接神經(jīng)網(wǎng)絡(luò)
importtorch.nnasnn#導(dǎo)入nn庫(kù)
classNeuralNet(nn.Module):
def__init__(self,input_num,hidden_num,output_num):
super(NeuralNet,self).__init__()
self.fc1=nn.Linear(input_num,hidden_num)
self.fc2=nn.Linear(hidden_num,output_num)
self.relu=nn.ReLU()
defforward(self,x):
x=self.fc1(x)
x=self.relu(x)
y=self.fc2(x)
returny
實(shí)踐任務(wù)2-全連接神經(jīng)網(wǎng)絡(luò)模型搭建1定義全連接神經(jīng)網(wǎng)絡(luò)
#設(shè)置參數(shù)
epoches=20
lr=0.001
input_num=784
hidden_num=500
output_num=10
device=torch.device("cuda"iftorch.cuda.is_available()else"cpu")
#創(chuàng)建網(wǎng)絡(luò)模型
model=NeuralNet(input_num,hidden_num,output_num)
print(model)實(shí)踐任務(wù)2-全連接神經(jīng)網(wǎng)絡(luò)模型搭建1定義全連接神經(jīng)網(wǎng)絡(luò)
運(yùn)行后輸出如下:NeuralNet((fc1):Linear(in_features=784,out_features=500,bias=True)(fc2):Linear(in_features=500,out_features=10,bias=True)(relu):ReLU())實(shí)踐任務(wù)2-全連接神經(jīng)網(wǎng)絡(luò)模型搭建2前向傳播
定義好網(wǎng)絡(luò)模型后,我們會(huì)將所有的數(shù)據(jù)按照batch的方式進(jìn)行輸入,得到對(duì)應(yīng)的網(wǎng)絡(luò)輸出,這就是所有的前向傳播。
實(shí)踐任務(wù)2-全連接神經(jīng)網(wǎng)絡(luò)模型搭建2前向傳播
#前向傳播
images=images.reshape(-1,28*28)
image=images[:2]
label=labels[:2]
print(image.size())
print(label)
out=model(image)
print(out)實(shí)踐任務(wù)2-全連接神經(jīng)網(wǎng)絡(luò)模型搭建2前向傳播
運(yùn)行程序輸出的結(jié)果如下:torch.Size([2,784])tensor([0,6])tensor([[0.1336,0.2989,0.1140,-0.0331,0.1986,-0.1656,-0.1346,0.1204,-0.3536,0.2364],[0.3198,0.3422,-0.2137,0.2526,0.3694,-0.0444,-0.1710,-0.0321,0.1679,-0.2004]],grad_fn=<AddmmBackward0>)實(shí)踐任務(wù)2-全連接神經(jīng)網(wǎng)絡(luò)模型搭建
3計(jì)算損失
損失函數(shù)需要一對(duì)輸入:模型輸出和目標(biāo),用來(lái)評(píng)估輸出值和目標(biāo)值之間的差距,損失函數(shù)用loss表示,損失函數(shù)的作用就是計(jì)算神經(jīng)網(wǎng)絡(luò)每次迭代的前向計(jì)算結(jié)果和真實(shí)值之間的差距,從而指導(dǎo)模型下一步訓(xùn)練往正確的方向進(jìn)行。常見的損失函數(shù)有交叉熵?fù)p失函數(shù)和均方誤差損失函數(shù)。實(shí)踐任務(wù)2-全連接神經(jīng)網(wǎng)絡(luò)模型搭建3計(jì)算損失在PyTorch中,nn庫(kù)模塊提供了多種損失函數(shù),常用的有以下幾種:1.處理回歸問題的nn.MSELoss函數(shù),2.處理分類問題的nn.BCELoss函數(shù),3.處理多分類問題的nn.CrossEntropyLoss函數(shù)。實(shí)踐任務(wù)2-全連接神經(jīng)網(wǎng)絡(luò)模型搭建3計(jì)算損失#定義損失函數(shù)
criterion=nn.CrossEntropyLoss()
loss=criterion(out,label)
print(loss)實(shí)踐任務(wù)2-全連接神經(jīng)網(wǎng)絡(luò)模型搭建
4反向傳播與參數(shù)更新
當(dāng)計(jì)算出一次前向傳播的loss值之后,可進(jìn)行反向傳播計(jì)算梯度,以此來(lái)更新參數(shù)。在PyTorch中,對(duì)loss調(diào)用backward函數(shù)即可。backward函數(shù)屬于torch.autograd函數(shù)庫(kù),在深度學(xué)習(xí)過程中進(jìn)行反向傳播,計(jì)算輸出變量關(guān)于輸入變量的梯度。最后要做的事情就是更新神經(jīng)網(wǎng)絡(luò)的參數(shù),最簡(jiǎn)單的規(guī)則就是隨機(jī)梯度下降,公式如下:weight=weight-learningrate×gradient當(dāng)然,還有很多不同的更新規(guī)則,類似于SGD、Adam、RMSProp等,為了讓這些可行,PyTorch建立了一個(gè)torch.optim包,調(diào)用它可以實(shí)現(xiàn)上述任意一種優(yōu)化器。實(shí)踐任務(wù)2-全連接神經(jīng)網(wǎng)絡(luò)模型搭建
4反向傳播與參數(shù)更新#創(chuàng)建優(yōu)化器
importtorch.optimasoptim
optimizer=optim.SGD(model.parameters(),lr=0.01)#lr代表學(xué)習(xí)率
criterion=nn.CrossEntropyLoss()
#在訓(xùn)練過程中
image=images[:2]
label=labels[:2]
optimizer.zero_grad()#消除累積梯度
out=model(image)
loss=criterion(out,label)
loss.backward()
optimizer.step()#更新參數(shù)實(shí)踐任務(wù)3-手寫數(shù)字識(shí)別網(wǎng)絡(luò)訓(xùn)練
模型訓(xùn)練
為了方便后續(xù)使用模型,可以將訓(xùn)練過程寫成一個(gè)函數(shù),向該函數(shù)傳入網(wǎng)絡(luò)模型、損失函數(shù)、優(yōu)化器等必要對(duì)象后,在MNIST數(shù)據(jù)集上進(jìn)行訓(xùn)練并打印日志觀察過程。實(shí)踐任務(wù)3-手寫數(shù)字識(shí)別網(wǎng)絡(luò)訓(xùn)練
模型訓(xùn)練deftrain(epoches):
forepochinrange(epoches):
fori,datainenumerate(train_loader):
(images,labels)=data
images=images.reshape(-1,28*28)
output=model(images)實(shí)踐任務(wù)3-手寫數(shù)字識(shí)別網(wǎng)絡(luò)訓(xùn)練
模型訓(xùn)練deftrain(epoches):
forepochinrange(epoches):
fori,datainenumerate(train_loader):
(images,labels)=data
images=images.reshape(-1,28*28)
output=model(images)
#前向傳播,計(jì)算損失,方向傳播,更新參數(shù)
loss=criterion(output,labels)
optimizer.zero_grad()
loss.backward()
optimizer.step()
實(shí)踐任務(wù)3-手寫數(shù)字識(shí)別網(wǎng)絡(luò)訓(xùn)練
模型訓(xùn)練deftrain(epoches):
forepochinrange(epoches):
fori,datainenumerate(train_loader):
(images,labels)=data
#得到輸入和標(biāo)簽
#前向傳播,計(jì)算損失,方向傳播,更新參數(shù)
#打印日志
if(i+1)%100==0:
print('Epoch[{}/{}-{}],Loss:{:.4f}'
.format(epoch+1,epoches,(i+1),loss.item()))實(shí)踐任務(wù)3-手寫數(shù)字識(shí)別網(wǎng)絡(luò)訓(xùn)練
模型訓(xùn)練調(diào)用train(l)訓(xùn)練一輪的結(jié)果如下所示:Epoch[1/1-100],Loss:0.9250Epoch[1/1-200],Loss:0.7030Epoch[1/1-300],Loss:0.4063Epoch[1/1-400],Loss:0.3836Epoch[1/1-500],Loss:0.4059Epoch[1/1-600],Loss:0.4280Epoch[1/1-700],Loss:0.3695Epoch[1/1-800],Loss:0.3918Epoch[1/1-900],Loss:0.5331實(shí)踐任務(wù)3-手寫數(shù)字識(shí)別網(wǎng)絡(luò)訓(xùn)練模型訓(xùn)練模型訓(xùn)練的技巧:1.數(shù)據(jù)預(yù)處理2.超參數(shù)調(diào)整3.模型選擇4.防止過擬合實(shí)踐任務(wù)3-手寫數(shù)字識(shí)別網(wǎng)絡(luò)訓(xùn)練模型訓(xùn)練模型訓(xùn)練的注意點(diǎn):1.訓(xùn)練速度2.可視化訓(xùn)練過程3.模型保存和加載4.模型解釋實(shí)踐任務(wù)4-手寫數(shù)字識(shí)別測(cè)試和評(píng)估
模型評(píng)估
在訓(xùn)練完成以后,為了檢驗(yàn)?zāi)P偷挠?xùn)練結(jié)果,可以在測(cè)試集上進(jìn)行驗(yàn)證,通過不同的評(píng)估方法來(lái)評(píng)估。一個(gè)分類模型,常見的評(píng)估方法是求分類準(zhǔn)確率,它能衡量所有類別中預(yù)測(cè)正確的個(gè)數(shù)占所有樣本的比值。實(shí)踐任務(wù)4-手寫數(shù)字識(shí)別測(cè)試和評(píng)估
模型評(píng)估withtorch.no_grad():
correct=0
total=0
forimages,labelsintest_loader:
images=images.reshape(-1,28*28)
output=model(images)
_,predicted=torch.max(output,1)
total+=labels.size(0)
correct+=(predicted==labels).sum().item()
實(shí)踐任務(wù)4-手寫數(shù)字識(shí)別測(cè)試和評(píng)估
模型評(píng)估withtorch.no_grad():
correct=0
total=0
forimages,labelsintest_loader:
images=images.reshape(-1,28*28)
output=model(images)
_,predicted=torch.max(output,1)
total+=labels.size(0)
correct+=(predicted==labels).sum().item()
print("Theaccuracyoftotal{}images:{}%".format(total,100*correct/total))實(shí)踐任務(wù)4-手寫數(shù)字識(shí)別測(cè)試和評(píng)估模型評(píng)估Theaccuracyoftotal10000images:97.63%上述代碼輸出:實(shí)踐任務(wù)4-手寫數(shù)字識(shí)別測(cè)試和評(píng)估模型評(píng)估除了準(zhǔn)確率外,還有很多其他的評(píng)價(jià)指標(biāo)可以用來(lái)評(píng)價(jià)分類模型的性能,例如精確率、召回率、F1值等。精確率(Precision):指模型預(yù)測(cè)為正例中,真正為正例的比例。?其中TP表示真正例的數(shù)量,F(xiàn)P表示假正例的數(shù)量。實(shí)踐任務(wù)4-手寫數(shù)字識(shí)別測(cè)試和評(píng)估模型評(píng)估除了準(zhǔn)確率外,還有很多其他的評(píng)價(jià)指標(biāo)可以用來(lái)評(píng)價(jià)分類模型的性能,例如精確率、召回率、F1值等。召回率(Recall):指真正為正例中,模型預(yù)測(cè)為正例的比例。?其中TP表示真正例的數(shù)量,F(xiàn)N表示假反例的數(shù)量。實(shí)踐任務(wù)4-手寫數(shù)字識(shí)別測(cè)試和評(píng)估模型評(píng)估除了準(zhǔn)確率外,還有很多其他的評(píng)價(jià)指標(biāo)可以用來(lái)評(píng)價(jià)分類模型的性能,例如精確率、召回率、F1值等。F1值:綜合考慮精確率和召回率,是精確率和召回率的調(diào)和平均數(shù)。?實(shí)踐任務(wù)4-手寫數(shù)字識(shí)別測(cè)試和評(píng)估模型評(píng)估fromsklearn.metricsimportprecision_score,recall_score,f1_scorewithtorch.no_grad():correct=0total=0true_labels=[]pred_labels=[]forimages,labelsintest_loader:images=images.reshape(-1,28*28)output=model(images)_,predicted=torch.max(output,1)total+=labels.size(0)correct+=(predicted==labels).sum().item()true_labels.extend(labels.tolist())pred_labels.extend(predicted.tolist())實(shí)踐任務(wù)4-手寫數(shù)字識(shí)別測(cè)試和評(píng)估模型評(píng)估fromsklearn.metricsimportprecision_score,recall_score,f1_scorewithtorch.no_grad():correct=0total=0true_labels=[]pred_labels=[]forimages,labelsintest_loader:
…accuracy=100*correct/totalprecision=precision_score(true_labels,pred_labels,average='macro')recall=recall_score(true_labels,pred_labels,average='macro')f1=f1_score(true_labels,pred_labels,average='macro')實(shí)踐任務(wù)4-手寫數(shù)字識(shí)別測(cè)試和評(píng)估模型評(píng)估fromsklearn.metricsimportprecision_score,recall_score,f1_scorewithtorch.no_grad(): …print("Theaccuracyoftotal{}images:{}%".format(total,accuracy))print("Theprecisionofthemodelis:{:.2f}%".format(precision*100))print("Therecallofthemodelis:{:.2f}%".format(recall*100))print("TheF1scoreofthemodelis:{:.2f}%".format(f1*100))實(shí)踐任務(wù)4-手寫數(shù)字識(shí)別測(cè)試和評(píng)估模型評(píng)估模型評(píng)價(jià)注意點(diǎn):1.數(shù)據(jù)集的劃分2.評(píng)價(jià)指標(biāo)的選擇3.交叉驗(yàn)證4.對(duì)比實(shí)驗(yàn)5.可視化分析
擴(kuò)展知識(shí)閱讀-感知機(jī)原理
M-P模型
M-P模型是首個(gè)模擬生物神經(jīng)元的結(jié)構(gòu)和工作原理構(gòu)造出來(lái)的一個(gè)抽象和簡(jiǎn)化了的數(shù)學(xué)模型。它由心理學(xué)家沃倫?麥卡洛克(WarrenMcCulloch)和數(shù)理邏輯學(xué)家沃爾特?皮茲(WalterPitts)在1943年提出并以二人的名字命名。擴(kuò)展知識(shí)閱讀-感知機(jī)原理
感知機(jī)模型
感知機(jī)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人定制刀具合同范本
- 買賣礦粉合同范本
- 解除飯店合伙合同范本
- it外包開發(fā)合同范本
- 養(yǎng)殖小鳥出售合同范本
- 制造商供貨合同范本
- 協(xié)議股東合同范本
- 合伙生意分工合同范本
- 占他人土地建房合同范本
- 公租房 租房合同范本
- 2025年廣西職業(yè)院校技能大賽高職組(商務(wù)數(shù)據(jù)分析賽項(xiàng))參考試題庫(kù)資料及答案
- 2025年黑龍江農(nóng)墾職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)帶答案
- 四年級(jí)下冊(cè) 道德與法治 全冊(cè)教案
- 個(gè)人租房房屋合同范本
- MSA測(cè)量系統(tǒng)培訓(xùn)
- 冷庫(kù)安全培訓(xùn)
- 線上教育平臺(tái)教師教學(xué)行為規(guī)范與責(zé)任書
- 2025年內(nèi)蒙古法院系統(tǒng)招聘用制書記員2988人過渡高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 中央2025年全國(guó)婦聯(lián)所屬在京事業(yè)單位招聘93人筆試歷年參考題庫(kù)附帶答案詳解
- 《環(huán)境污染對(duì)生態(tài)系統(tǒng)的影響》課件
- 2024年保安員證資格考試題庫(kù)及答案
評(píng)論
0/150
提交評(píng)論