'Pytorch 手寫數字識別(MINIST 數據集訓練)'

數據結構 人工智能 Python 文章 可視化技術 人工智能研究所 2019-09-12
"
"
Pytorch 手寫數字識別(MINIST 數據集訓練)

CNN

前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別

說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章

讀懂卷積神經網絡

"
Pytorch 手寫數字識別(MINIST 數據集訓練)

CNN

前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別

說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章

讀懂卷積神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

https://tensorspace.org/

pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了

1、導入第三方庫

"
Pytorch 手寫數字識別(MINIST 數據集訓練)

CNN

前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別

說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章

讀懂卷積神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

https://tensorspace.org/

pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了

1、導入第三方庫

Pytorch 手寫數字識別(MINIST 數據集訓練)

2、設置測試數據集與訓練數據集

"
Pytorch 手寫數字識別(MINIST 數據集訓練)

CNN

前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別

說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章

讀懂卷積神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

https://tensorspace.org/

pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了

1、導入第三方庫

Pytorch 手寫數字識別(MINIST 數據集訓練)

2、設置測試數據集與訓練數據集

Pytorch 手寫數字識別(MINIST 數據集訓練)

3、提取數據集數據

#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練

# 31 從測試集數據中提取2000個圖片數據

# 32 提取相對應的數字標籤

"
Pytorch 手寫數字識別(MINIST 數據集訓練)

CNN

前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別

說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章

讀懂卷積神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

https://tensorspace.org/

pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了

1、導入第三方庫

Pytorch 手寫數字識別(MINIST 數據集訓練)

2、設置測試數據集與訓練數據集

Pytorch 手寫數字識別(MINIST 數據集訓練)

3、提取數據集數據

#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練

# 31 從測試集數據中提取2000個圖片數據

# 32 提取相對應的數字標籤

Pytorch 手寫數字識別(MINIST 數據集訓練)

4、定義神經網絡

"
Pytorch 手寫數字識別(MINIST 數據集訓練)

CNN

前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別

說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章

讀懂卷積神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

https://tensorspace.org/

pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了

1、導入第三方庫

Pytorch 手寫數字識別(MINIST 數據集訓練)

2、設置測試數據集與訓練數據集

Pytorch 手寫數字識別(MINIST 數據集訓練)

3、提取數據集數據

#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練

# 31 從測試集數據中提取2000個圖片數據

# 32 提取相對應的數字標籤

Pytorch 手寫數字識別(MINIST 數據集訓練)

4、定義神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)
"
Pytorch 手寫數字識別(MINIST 數據集訓練)

CNN

前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別

說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章

讀懂卷積神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

https://tensorspace.org/

pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了

1、導入第三方庫

Pytorch 手寫數字識別(MINIST 數據集訓練)

2、設置測試數據集與訓練數據集

Pytorch 手寫數字識別(MINIST 數據集訓練)

3、提取數據集數據

#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練

# 31 從測試集數據中提取2000個圖片數據

# 32 提取相對應的數字標籤

Pytorch 手寫數字識別(MINIST 數據集訓練)

4、定義神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)
Pytorch 手寫數字識別(MINIST 數據集訓練)

第一層卷積:

此結構時pytorch標準的模板結構,本神經網絡一共有2層,若瞭解tensorflow的小夥伴可以很容易理解此神經結構,第一層,我們輸入minist的數據集,minist的數據圖片是一維 28*28的圖片,所以第一層的輸入(1,28,28),高度為1,設置輸出16通道,使用5*5的卷積核對圖片進行卷積運算,每步移動一格,為了避免圖片尺寸變化,設置pading為2,則經過第一層卷積就輸出(16,28,28)數據格式

再經過relu與maxpooling (使用2*2卷積核)數據輸出(16,14,14)

第二層卷積:

第二層此代碼是簡化寫法,函數中的參數與第一層一一對應

nn.Conv2d(16, 32, 5, 1, 2)

in_channels=16, # input height(輸入通道數)

out_channels=32, # n_filters(卷積核,或者輸出通道數)

kernel_size=5, # filter size(卷積核大小)

stride=1, # filter movement/step(卷積部數)

padding=2, # 如果想要 con2d 出來的圖片長寬沒有變化, (外部邊緣補0)

# padding=(kernel_size-1)/2 當 stride=1

經過第二層卷積得到(32,14,14)數據結構

再次經過relu與maxpooling (使用2*2卷積核)數據輸出(32,7,7)數據結構

全連接層

最後使用nn.linear()全連接層進行數據的全連接數據結構(32*7*7,10)

10: 0--9一共10個分類

以上便是整個卷積神經網絡的結構,

大致為:input-卷積-Relu-pooling-卷積-Relu-pooling-linear-output

卷積神經網絡建完後,使用forward()前向傳播神經網絡進行輸入圖片的訓練

def forward(self, x):

x = self.conv1(x) # 第一層卷積

x = self.conv2(x) # 第二層卷積

x = x.view(x.size(0), -1) # 展平多維的卷積圖成 (batch_size, 32 * 7 * 7)

output = self.out(x) # 全連接

return output

5、訓練神經網絡

"
Pytorch 手寫數字識別(MINIST 數據集訓練)

CNN

前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別

說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章

讀懂卷積神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

https://tensorspace.org/

pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了

1、導入第三方庫

Pytorch 手寫數字識別(MINIST 數據集訓練)

2、設置測試數據集與訓練數據集

Pytorch 手寫數字識別(MINIST 數據集訓練)

3、提取數據集數據

#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練

# 31 從測試集數據中提取2000個圖片數據

# 32 提取相對應的數字標籤

Pytorch 手寫數字識別(MINIST 數據集訓練)

4、定義神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)
Pytorch 手寫數字識別(MINIST 數據集訓練)

第一層卷積:

此結構時pytorch標準的模板結構,本神經網絡一共有2層,若瞭解tensorflow的小夥伴可以很容易理解此神經結構,第一層,我們輸入minist的數據集,minist的數據圖片是一維 28*28的圖片,所以第一層的輸入(1,28,28),高度為1,設置輸出16通道,使用5*5的卷積核對圖片進行卷積運算,每步移動一格,為了避免圖片尺寸變化,設置pading為2,則經過第一層卷積就輸出(16,28,28)數據格式

再經過relu與maxpooling (使用2*2卷積核)數據輸出(16,14,14)

第二層卷積:

第二層此代碼是簡化寫法,函數中的參數與第一層一一對應

nn.Conv2d(16, 32, 5, 1, 2)

in_channels=16, # input height(輸入通道數)

out_channels=32, # n_filters(卷積核,或者輸出通道數)

kernel_size=5, # filter size(卷積核大小)

stride=1, # filter movement/step(卷積部數)

padding=2, # 如果想要 con2d 出來的圖片長寬沒有變化, (外部邊緣補0)

# padding=(kernel_size-1)/2 當 stride=1

經過第二層卷積得到(32,14,14)數據結構

再次經過relu與maxpooling (使用2*2卷積核)數據輸出(32,7,7)數據結構

全連接層

最後使用nn.linear()全連接層進行數據的全連接數據結構(32*7*7,10)

10: 0--9一共10個分類

以上便是整個卷積神經網絡的結構,

大致為:input-卷積-Relu-pooling-卷積-Relu-pooling-linear-output

卷積神經網絡建完後,使用forward()前向傳播神經網絡進行輸入圖片的訓練

def forward(self, x):

x = self.conv1(x) # 第一層卷積

x = self.conv2(x) # 第二層卷積

x = x.view(x.size(0), -1) # 展平多維的卷積圖成 (batch_size, 32 * 7 * 7)

output = self.out(x) # 全連接

return output

5、訓練神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

pytorch的訓練跟tensorflow的訓練類似,我們建立loss函數,建立優化器,訓練的目的是使用優化器讓loss梯度下降,使loss越來越小,我們每50步查看一下神經網絡的訓練結果

6、測試神經網絡

神經網絡訓練完成後,我們使用測試集的數據,進行一下神經網絡的測試,看看訓練的結果

"
Pytorch 手寫數字識別(MINIST 數據集訓練)

CNN

前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別

說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章

讀懂卷積神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

https://tensorspace.org/

pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了

1、導入第三方庫

Pytorch 手寫數字識別(MINIST 數據集訓練)

2、設置測試數據集與訓練數據集

Pytorch 手寫數字識別(MINIST 數據集訓練)

3、提取數據集數據

#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練

# 31 從測試集數據中提取2000個圖片數據

# 32 提取相對應的數字標籤

Pytorch 手寫數字識別(MINIST 數據集訓練)

4、定義神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)
Pytorch 手寫數字識別(MINIST 數據集訓練)

第一層卷積:

此結構時pytorch標準的模板結構,本神經網絡一共有2層,若瞭解tensorflow的小夥伴可以很容易理解此神經結構,第一層,我們輸入minist的數據集,minist的數據圖片是一維 28*28的圖片,所以第一層的輸入(1,28,28),高度為1,設置輸出16通道,使用5*5的卷積核對圖片進行卷積運算,每步移動一格,為了避免圖片尺寸變化,設置pading為2,則經過第一層卷積就輸出(16,28,28)數據格式

再經過relu與maxpooling (使用2*2卷積核)數據輸出(16,14,14)

第二層卷積:

第二層此代碼是簡化寫法,函數中的參數與第一層一一對應

nn.Conv2d(16, 32, 5, 1, 2)

in_channels=16, # input height(輸入通道數)

out_channels=32, # n_filters(卷積核,或者輸出通道數)

kernel_size=5, # filter size(卷積核大小)

stride=1, # filter movement/step(卷積部數)

padding=2, # 如果想要 con2d 出來的圖片長寬沒有變化, (外部邊緣補0)

# padding=(kernel_size-1)/2 當 stride=1

經過第二層卷積得到(32,14,14)數據結構

再次經過relu與maxpooling (使用2*2卷積核)數據輸出(32,7,7)數據結構

全連接層

最後使用nn.linear()全連接層進行數據的全連接數據結構(32*7*7,10)

10: 0--9一共10個分類

以上便是整個卷積神經網絡的結構,

大致為:input-卷積-Relu-pooling-卷積-Relu-pooling-linear-output

卷積神經網絡建完後,使用forward()前向傳播神經網絡進行輸入圖片的訓練

def forward(self, x):

x = self.conv1(x) # 第一層卷積

x = self.conv2(x) # 第二層卷積

x = x.view(x.size(0), -1) # 展平多維的卷積圖成 (batch_size, 32 * 7 * 7)

output = self.out(x) # 全連接

return output

5、訓練神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

pytorch的訓練跟tensorflow的訓練類似,我們建立loss函數,建立優化器,訓練的目的是使用優化器讓loss梯度下降,使loss越來越小,我們每50步查看一下神經網絡的訓練結果

6、測試神經網絡

神經網絡訓練完成後,我們使用測試集的數據,進行一下神經網絡的測試,看看訓練的結果

Pytorch 手寫數字識別(MINIST 數據集訓練)

7、保存神經網絡

最後我們保存一下神經網絡,以便後期識別數字使用

"
Pytorch 手寫數字識別(MINIST 數據集訓練)

CNN

前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別

說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章

讀懂卷積神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

https://tensorspace.org/

pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了

1、導入第三方庫

Pytorch 手寫數字識別(MINIST 數據集訓練)

2、設置測試數據集與訓練數據集

Pytorch 手寫數字識別(MINIST 數據集訓練)

3、提取數據集數據

#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練

# 31 從測試集數據中提取2000個圖片數據

# 32 提取相對應的數字標籤

Pytorch 手寫數字識別(MINIST 數據集訓練)

4、定義神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)
Pytorch 手寫數字識別(MINIST 數據集訓練)

第一層卷積:

此結構時pytorch標準的模板結構,本神經網絡一共有2層,若瞭解tensorflow的小夥伴可以很容易理解此神經結構,第一層,我們輸入minist的數據集,minist的數據圖片是一維 28*28的圖片,所以第一層的輸入(1,28,28),高度為1,設置輸出16通道,使用5*5的卷積核對圖片進行卷積運算,每步移動一格,為了避免圖片尺寸變化,設置pading為2,則經過第一層卷積就輸出(16,28,28)數據格式

再經過relu與maxpooling (使用2*2卷積核)數據輸出(16,14,14)

第二層卷積:

第二層此代碼是簡化寫法,函數中的參數與第一層一一對應

nn.Conv2d(16, 32, 5, 1, 2)

in_channels=16, # input height(輸入通道數)

out_channels=32, # n_filters(卷積核,或者輸出通道數)

kernel_size=5, # filter size(卷積核大小)

stride=1, # filter movement/step(卷積部數)

padding=2, # 如果想要 con2d 出來的圖片長寬沒有變化, (外部邊緣補0)

# padding=(kernel_size-1)/2 當 stride=1

經過第二層卷積得到(32,14,14)數據結構

再次經過relu與maxpooling (使用2*2卷積核)數據輸出(32,7,7)數據結構

全連接層

最後使用nn.linear()全連接層進行數據的全連接數據結構(32*7*7,10)

10: 0--9一共10個分類

以上便是整個卷積神經網絡的結構,

大致為:input-卷積-Relu-pooling-卷積-Relu-pooling-linear-output

卷積神經網絡建完後,使用forward()前向傳播神經網絡進行輸入圖片的訓練

def forward(self, x):

x = self.conv1(x) # 第一層卷積

x = self.conv2(x) # 第二層卷積

x = x.view(x.size(0), -1) # 展平多維的卷積圖成 (batch_size, 32 * 7 * 7)

output = self.out(x) # 全連接

return output

5、訓練神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

pytorch的訓練跟tensorflow的訓練類似,我們建立loss函數,建立優化器,訓練的目的是使用優化器讓loss梯度下降,使loss越來越小,我們每50步查看一下神經網絡的訓練結果

6、測試神經網絡

神經網絡訓練完成後,我們使用測試集的數據,進行一下神經網絡的測試,看看訓練的結果

Pytorch 手寫數字識別(MINIST 數據集訓練)

7、保存神經網絡

最後我們保存一下神經網絡,以便後期識別數字使用

Pytorch 手寫數字識別(MINIST 數據集訓練)

以上便是整個神經網絡的手寫數字識別過程,我們保存了神經網絡的訓練參數,後期我們會是使用訓練好的參數,進行神經網絡的具體圖識別

"
Pytorch 手寫數字識別(MINIST 數據集訓練)

CNN

前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別

說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章

讀懂卷積神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

https://tensorspace.org/

pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了

1、導入第三方庫

Pytorch 手寫數字識別(MINIST 數據集訓練)

2、設置測試數據集與訓練數據集

Pytorch 手寫數字識別(MINIST 數據集訓練)

3、提取數據集數據

#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練

# 31 從測試集數據中提取2000個圖片數據

# 32 提取相對應的數字標籤

Pytorch 手寫數字識別(MINIST 數據集訓練)

4、定義神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)
Pytorch 手寫數字識別(MINIST 數據集訓練)

第一層卷積:

此結構時pytorch標準的模板結構,本神經網絡一共有2層,若瞭解tensorflow的小夥伴可以很容易理解此神經結構,第一層,我們輸入minist的數據集,minist的數據圖片是一維 28*28的圖片,所以第一層的輸入(1,28,28),高度為1,設置輸出16通道,使用5*5的卷積核對圖片進行卷積運算,每步移動一格,為了避免圖片尺寸變化,設置pading為2,則經過第一層卷積就輸出(16,28,28)數據格式

再經過relu與maxpooling (使用2*2卷積核)數據輸出(16,14,14)

第二層卷積:

第二層此代碼是簡化寫法,函數中的參數與第一層一一對應

nn.Conv2d(16, 32, 5, 1, 2)

in_channels=16, # input height(輸入通道數)

out_channels=32, # n_filters(卷積核,或者輸出通道數)

kernel_size=5, # filter size(卷積核大小)

stride=1, # filter movement/step(卷積部數)

padding=2, # 如果想要 con2d 出來的圖片長寬沒有變化, (外部邊緣補0)

# padding=(kernel_size-1)/2 當 stride=1

經過第二層卷積得到(32,14,14)數據結構

再次經過relu與maxpooling (使用2*2卷積核)數據輸出(32,7,7)數據結構

全連接層

最後使用nn.linear()全連接層進行數據的全連接數據結構(32*7*7,10)

10: 0--9一共10個分類

以上便是整個卷積神經網絡的結構,

大致為:input-卷積-Relu-pooling-卷積-Relu-pooling-linear-output

卷積神經網絡建完後,使用forward()前向傳播神經網絡進行輸入圖片的訓練

def forward(self, x):

x = self.conv1(x) # 第一層卷積

x = self.conv2(x) # 第二層卷積

x = x.view(x.size(0), -1) # 展平多維的卷積圖成 (batch_size, 32 * 7 * 7)

output = self.out(x) # 全連接

return output

5、訓練神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

pytorch的訓練跟tensorflow的訓練類似,我們建立loss函數,建立優化器,訓練的目的是使用優化器讓loss梯度下降,使loss越來越小,我們每50步查看一下神經網絡的訓練結果

6、測試神經網絡

神經網絡訓練完成後,我們使用測試集的數據,進行一下神經網絡的測試,看看訓練的結果

Pytorch 手寫數字識別(MINIST 數據集訓練)

7、保存神經網絡

最後我們保存一下神經網絡,以便後期識別數字使用

Pytorch 手寫數字識別(MINIST 數據集訓練)

以上便是整個神經網絡的手寫數字識別過程,我們保存了神經網絡的訓練參數,後期我們會是使用訓練好的參數,進行神經網絡的具體圖識別

Pytorch 手寫數字識別(MINIST 數據集訓練)

從訓練結果看,第一次的loss很大,精度很低,隨著訓練的步數增加loss也越來越小,精度也越來越大

從測試集中提取了10個數據,其預測結果完全正確

"
Pytorch 手寫數字識別(MINIST 數據集訓練)

CNN

前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別

說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章

讀懂卷積神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

https://tensorspace.org/

pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了

1、導入第三方庫

Pytorch 手寫數字識別(MINIST 數據集訓練)

2、設置測試數據集與訓練數據集

Pytorch 手寫數字識別(MINIST 數據集訓練)

3、提取數據集數據

#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練

# 31 從測試集數據中提取2000個圖片數據

# 32 提取相對應的數字標籤

Pytorch 手寫數字識別(MINIST 數據集訓練)

4、定義神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)
Pytorch 手寫數字識別(MINIST 數據集訓練)

第一層卷積:

此結構時pytorch標準的模板結構,本神經網絡一共有2層,若瞭解tensorflow的小夥伴可以很容易理解此神經結構,第一層,我們輸入minist的數據集,minist的數據圖片是一維 28*28的圖片,所以第一層的輸入(1,28,28),高度為1,設置輸出16通道,使用5*5的卷積核對圖片進行卷積運算,每步移動一格,為了避免圖片尺寸變化,設置pading為2,則經過第一層卷積就輸出(16,28,28)數據格式

再經過relu與maxpooling (使用2*2卷積核)數據輸出(16,14,14)

第二層卷積:

第二層此代碼是簡化寫法,函數中的參數與第一層一一對應

nn.Conv2d(16, 32, 5, 1, 2)

in_channels=16, # input height(輸入通道數)

out_channels=32, # n_filters(卷積核,或者輸出通道數)

kernel_size=5, # filter size(卷積核大小)

stride=1, # filter movement/step(卷積部數)

padding=2, # 如果想要 con2d 出來的圖片長寬沒有變化, (外部邊緣補0)

# padding=(kernel_size-1)/2 當 stride=1

經過第二層卷積得到(32,14,14)數據結構

再次經過relu與maxpooling (使用2*2卷積核)數據輸出(32,7,7)數據結構

全連接層

最後使用nn.linear()全連接層進行數據的全連接數據結構(32*7*7,10)

10: 0--9一共10個分類

以上便是整個卷積神經網絡的結構,

大致為:input-卷積-Relu-pooling-卷積-Relu-pooling-linear-output

卷積神經網絡建完後,使用forward()前向傳播神經網絡進行輸入圖片的訓練

def forward(self, x):

x = self.conv1(x) # 第一層卷積

x = self.conv2(x) # 第二層卷積

x = x.view(x.size(0), -1) # 展平多維的卷積圖成 (batch_size, 32 * 7 * 7)

output = self.out(x) # 全連接

return output

5、訓練神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

pytorch的訓練跟tensorflow的訓練類似,我們建立loss函數,建立優化器,訓練的目的是使用優化器讓loss梯度下降,使loss越來越小,我們每50步查看一下神經網絡的訓練結果

6、測試神經網絡

神經網絡訓練完成後,我們使用測試集的數據,進行一下神經網絡的測試,看看訓練的結果

Pytorch 手寫數字識別(MINIST 數據集訓練)

7、保存神經網絡

最後我們保存一下神經網絡,以便後期識別數字使用

Pytorch 手寫數字識別(MINIST 數據集訓練)

以上便是整個神經網絡的手寫數字識別過程,我們保存了神經網絡的訓練參數,後期我們會是使用訓練好的參數,進行神經網絡的具體圖識別

Pytorch 手寫數字識別(MINIST 數據集訓練)

從訓練結果看,第一次的loss很大,精度很低,隨著訓練的步數增加loss也越來越小,精度也越來越大

從測試集中提取了10個數據,其預測結果完全正確

Pytorch 手寫數字識別(MINIST 數據集訓練)

http://scs.ryerson.ca/~aharley/vis/conv/

小夥伴們可以使用在線3D可視化網站,查看CNN的結構

小編開發了小程序,可以體驗不同的AI工具

微&*信搜索:啟示AI科技

體驗不一樣的AI工具

"
Pytorch 手寫數字識別(MINIST 數據集訓練)

CNN

前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別

說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章

讀懂卷積神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

https://tensorspace.org/

pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了

1、導入第三方庫

Pytorch 手寫數字識別(MINIST 數據集訓練)

2、設置測試數據集與訓練數據集

Pytorch 手寫數字識別(MINIST 數據集訓練)

3、提取數據集數據

#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練

# 31 從測試集數據中提取2000個圖片數據

# 32 提取相對應的數字標籤

Pytorch 手寫數字識別(MINIST 數據集訓練)

4、定義神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)
Pytorch 手寫數字識別(MINIST 數據集訓練)

第一層卷積:

此結構時pytorch標準的模板結構,本神經網絡一共有2層,若瞭解tensorflow的小夥伴可以很容易理解此神經結構,第一層,我們輸入minist的數據集,minist的數據圖片是一維 28*28的圖片,所以第一層的輸入(1,28,28),高度為1,設置輸出16通道,使用5*5的卷積核對圖片進行卷積運算,每步移動一格,為了避免圖片尺寸變化,設置pading為2,則經過第一層卷積就輸出(16,28,28)數據格式

再經過relu與maxpooling (使用2*2卷積核)數據輸出(16,14,14)

第二層卷積:

第二層此代碼是簡化寫法,函數中的參數與第一層一一對應

nn.Conv2d(16, 32, 5, 1, 2)

in_channels=16, # input height(輸入通道數)

out_channels=32, # n_filters(卷積核,或者輸出通道數)

kernel_size=5, # filter size(卷積核大小)

stride=1, # filter movement/step(卷積部數)

padding=2, # 如果想要 con2d 出來的圖片長寬沒有變化, (外部邊緣補0)

# padding=(kernel_size-1)/2 當 stride=1

經過第二層卷積得到(32,14,14)數據結構

再次經過relu與maxpooling (使用2*2卷積核)數據輸出(32,7,7)數據結構

全連接層

最後使用nn.linear()全連接層進行數據的全連接數據結構(32*7*7,10)

10: 0--9一共10個分類

以上便是整個卷積神經網絡的結構,

大致為:input-卷積-Relu-pooling-卷積-Relu-pooling-linear-output

卷積神經網絡建完後,使用forward()前向傳播神經網絡進行輸入圖片的訓練

def forward(self, x):

x = self.conv1(x) # 第一層卷積

x = self.conv2(x) # 第二層卷積

x = x.view(x.size(0), -1) # 展平多維的卷積圖成 (batch_size, 32 * 7 * 7)

output = self.out(x) # 全連接

return output

5、訓練神經網絡

Pytorch 手寫數字識別(MINIST 數據集訓練)

pytorch的訓練跟tensorflow的訓練類似,我們建立loss函數,建立優化器,訓練的目的是使用優化器讓loss梯度下降,使loss越來越小,我們每50步查看一下神經網絡的訓練結果

6、測試神經網絡

神經網絡訓練完成後,我們使用測試集的數據,進行一下神經網絡的測試,看看訓練的結果

Pytorch 手寫數字識別(MINIST 數據集訓練)

7、保存神經網絡

最後我們保存一下神經網絡,以便後期識別數字使用

Pytorch 手寫數字識別(MINIST 數據集訓練)

以上便是整個神經網絡的手寫數字識別過程,我們保存了神經網絡的訓練參數,後期我們會是使用訓練好的參數,進行神經網絡的具體圖識別

Pytorch 手寫數字識別(MINIST 數據集訓練)

從訓練結果看,第一次的loss很大,精度很低,隨著訓練的步數增加loss也越來越小,精度也越來越大

從測試集中提取了10個數據,其預測結果完全正確

Pytorch 手寫數字識別(MINIST 數據集訓練)

http://scs.ryerson.ca/~aharley/vis/conv/

小夥伴們可以使用在線3D可視化網站,查看CNN的結構

小編開發了小程序,可以體驗不同的AI工具

微&*信搜索:啟示AI科技

體驗不一樣的AI工具

Pytorch 手寫數字識別(MINIST 數據集訓練)
"

相關推薦

推薦中...