前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別
說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章
前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別
說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章
pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了
1、導入第三方庫
前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別
說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章
pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了
1、導入第三方庫
2、設置測試數據集與訓練數據集
前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別
說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章
pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了
1、導入第三方庫
2、設置測試數據集與訓練數據集
3、提取數據集數據
#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練
# 31 從測試集數據中提取2000個圖片數據
# 32 提取相對應的數字標籤
前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別
說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章
pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了
1、導入第三方庫
2、設置測試數據集與訓練數據集
3、提取數據集數據
#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練
# 31 從測試集數據中提取2000個圖片數據
# 32 提取相對應的數字標籤
4、定義神經網絡
前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別
說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章
pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了
1、導入第三方庫
2、設置測試數據集與訓練數據集
3、提取數據集數據
#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練
# 31 從測試集數據中提取2000個圖片數據
# 32 提取相對應的數字標籤
4、定義神經網絡
前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別
說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章
pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了
1、導入第三方庫
2、設置測試數據集與訓練數據集
3、提取數據集數據
#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練
# 31 從測試集數據中提取2000個圖片數據
# 32 提取相對應的數字標籤
4、定義神經網絡
第一層卷積:
此結構時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、訓練神經網絡
前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別
說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章
pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了
1、導入第三方庫
2、設置測試數據集與訓練數據集
3、提取數據集數據
#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練
# 31 從測試集數據中提取2000個圖片數據
# 32 提取相對應的數字標籤
4、定義神經網絡
第一層卷積:
此結構時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的訓練跟tensorflow的訓練類似,我們建立loss函數,建立優化器,訓練的目的是使用優化器讓loss梯度下降,使loss越來越小,我們每50步查看一下神經網絡的訓練結果
6、測試神經網絡
神經網絡訓練完成後,我們使用測試集的數據,進行一下神經網絡的測試,看看訓練的結果
前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別
說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章
pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了
1、導入第三方庫
2、設置測試數據集與訓練數據集
3、提取數據集數據
#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練
# 31 從測試集數據中提取2000個圖片數據
# 32 提取相對應的數字標籤
4、定義神經網絡
第一層卷積:
此結構時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的訓練跟tensorflow的訓練類似,我們建立loss函數,建立優化器,訓練的目的是使用優化器讓loss梯度下降,使loss越來越小,我們每50步查看一下神經網絡的訓練結果
6、測試神經網絡
神經網絡訓練完成後,我們使用測試集的數據,進行一下神經網絡的測試,看看訓練的結果
7、保存神經網絡
最後我們保存一下神經網絡,以便後期識別數字使用
前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別
說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章
pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了
1、導入第三方庫
2、設置測試數據集與訓練數據集
3、提取數據集數據
#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練
# 31 從測試集數據中提取2000個圖片數據
# 32 提取相對應的數字標籤
4、定義神經網絡
第一層卷積:
此結構時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的訓練跟tensorflow的訓練類似,我們建立loss函數,建立優化器,訓練的目的是使用優化器讓loss梯度下降,使loss越來越小,我們每50步查看一下神經網絡的訓練結果
6、測試神經網絡
神經網絡訓練完成後,我們使用測試集的數據,進行一下神經網絡的測試,看看訓練的結果
7、保存神經網絡
最後我們保存一下神經網絡,以便後期識別數字使用
以上便是整個神經網絡的手寫數字識別過程,我們保存了神經網絡的訓練參數,後期我們會是使用訓練好的參數,進行神經網絡的具體圖識別
前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別
說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章
pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了
1、導入第三方庫
2、設置測試數據集與訓練數據集
3、提取數據集數據
#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練
# 31 從測試集數據中提取2000個圖片數據
# 32 提取相對應的數字標籤
4、定義神經網絡
第一層卷積:
此結構時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的訓練跟tensorflow的訓練類似,我們建立loss函數,建立優化器,訓練的目的是使用優化器讓loss梯度下降,使loss越來越小,我們每50步查看一下神經網絡的訓練結果
6、測試神經網絡
神經網絡訓練完成後,我們使用測試集的數據,進行一下神經網絡的測試,看看訓練的結果
7、保存神經網絡
最後我們保存一下神經網絡,以便後期識別數字使用
以上便是整個神經網絡的手寫數字識別過程,我們保存了神經網絡的訓練參數,後期我們會是使用訓練好的參數,進行神經網絡的具體圖識別
從訓練結果看,第一次的loss很大,精度很低,隨著訓練的步數增加loss也越來越小,精度也越來越大
從測試集中提取了10個數據,其預測結果完全正確
前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別
說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章
pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了
1、導入第三方庫
2、設置測試數據集與訓練數據集
3、提取數據集數據
#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練
# 31 從測試集數據中提取2000個圖片數據
# 32 提取相對應的數字標籤
4、定義神經網絡
第一層卷積:
此結構時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的訓練跟tensorflow的訓練類似,我們建立loss函數,建立優化器,訓練的目的是使用優化器讓loss梯度下降,使loss越來越小,我們每50步查看一下神經網絡的訓練結果
6、測試神經網絡
神經網絡訓練完成後,我們使用測試集的數據,進行一下神經網絡的測試,看看訓練的結果
7、保存神經網絡
最後我們保存一下神經網絡,以便後期識別數字使用
以上便是整個神經網絡的手寫數字識別過程,我們保存了神經網絡的訓練參數,後期我們會是使用訓練好的參數,進行神經網絡的具體圖識別
從訓練結果看,第一次的loss很大,精度很低,隨著訓練的步數增加loss也越來越小,精度也越來越大
從測試集中提取了10個數據,其預測結果完全正確
小夥伴們可以使用在線3D可視化網站,查看CNN的結構
小編開發了小程序,可以體驗不同的AI工具
微&*信搜索:啟示AI科技
體驗不一樣的AI工具
前期文章我們分享了tensorflow 的手寫數字識別的訓練以及識別過程,有網友私信是否寫一下pytorch訓練識別過程,本期文章我們來分享一下pytorch的手寫數字訓練人工智能TensorFlow(十六)MNIST手寫數字識別
說到圖片識別就不得不提卷積神經網絡,我們會在後期詳細介紹,或者參考小編往期的文章
pytorch自從發佈了1.0版本後,得到了廣大網友的歡迎與喜愛,本期我們利用pytorch來重構tensorflow的手寫數字識別的代碼,本期是訓練篇,識別篇我們後期分享。pytorch的安裝可參考《每天一分鐘,python一點通》教程,有關pytorch的知識點,也會在《每天一分鐘,python一點通》專欄分享,pytorch的手寫數字識別,跟tensorflow代碼思路幾乎一樣,若你瞭解tensorflow的代碼訓練過程,本期便很容易理解了
1、導入第三方庫
2、設置測試數據集與訓練數據集
3、提取數據集數據
#27 使用dataloader函數從訓練集數據中提取數據,每步神經網絡提取50個數據來進行訓練
# 31 從測試集數據中提取2000個圖片數據
# 32 提取相對應的數字標籤
4、定義神經網絡
第一層卷積:
此結構時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的訓練跟tensorflow的訓練類似,我們建立loss函數,建立優化器,訓練的目的是使用優化器讓loss梯度下降,使loss越來越小,我們每50步查看一下神經網絡的訓練結果
6、測試神經網絡
神經網絡訓練完成後,我們使用測試集的數據,進行一下神經網絡的測試,看看訓練的結果
7、保存神經網絡
最後我們保存一下神經網絡,以便後期識別數字使用
以上便是整個神經網絡的手寫數字識別過程,我們保存了神經網絡的訓練參數,後期我們會是使用訓練好的參數,進行神經網絡的具體圖識別
從訓練結果看,第一次的loss很大,精度很低,隨著訓練的步數增加loss也越來越小,精度也越來越大
從測試集中提取了10個數據,其預測結果完全正確
小夥伴們可以使用在線3D可視化網站,查看CNN的結構
小編開發了小程序,可以體驗不同的AI工具
微&*信搜索:啟示AI科技
體驗不一樣的AI工具