本章將會講解卷積神經網路(convolutional neural network, cnn)的常見層,並從頭搭建乙個字元識別模型。
學習cnn基礎和原理;
使用pytorch框架構建cnn模型,並完成訓練;
卷積神經網路(簡稱cnn)是一類特殊的人工神經網路,是深度學習中重要的乙個分支。cnn在很多領域都表現優異,精度和速度比傳統計算學習演算法高很多。特別是在計算機視覺領域,cnn是解決影象分類、影象檢索、物體檢測和語義分割的主流模型。
cnn每一層由眾多的卷積核組成,每個卷積核對輸入的畫素進行卷積操作,得到下一次的輸入。隨著網路層的增加卷積核會逐漸擴大感受野,並縮減影象的尺寸。
cnn是一種層次模型,輸入的是原始的畫素資料。cnn通過卷積(convolution)、池化(pooling)、非線性啟用函式(non-linear activation function)和全連線層(fully connected layer)構成。
如下圖所示為lenet網路結構,是非常經典的字元識別模型。兩個卷
積層,兩個池
化層,兩個全連線層組成。卷積核都是5×5,stride=1,池化層使用最大池化。
通過多次卷積和池化,cnn的最後一層將輸入的影象畫素對映為具體的輸出。如在分類任務中會轉換為不同類別的概率輸出,然後
計算真實標籤
與cnn
模型的**
結果的差異,
並通過反向傳播更新
每層的引數,
並在更新完成後再次
前向傳播,
如此反覆
直到訓練完成。 與
傳統機器學習模型
相比,cnn
具有一種端到端(e
ndtoend
)的思路。在cnn
訓練的過程中是直接從影象畫素到最終的輸出,
並不涉及到具體的特徵提取
和構建模型
的過程,
也不需要
人工的參與。
在上一章節我們講解了如何使用pytorch來讀取賽題資料集,本節我們使用本章學習到的知識構件乙個簡單的cnn模型,完成字元識別功能。在p
ytorch中構建
cnn模型
非常簡單,
只需要定義好
模型的引數和
正向傳播
即可,pytorch
會根據正向
傳播自動計算反向傳播。
在本章我們會構建乙個非常簡單的cnn,然後進行訓練。在此我們才用的是imagnet的預訓練模型resnet18。
Datawhale 零基礎入門CV
賽題名稱 零基礎入門cv之街道字元識別 1.匯入所需庫 import os,sys,glob,shutil,json os.environ cuda visible devices 0 import cv2 import matplotlib.pyplot as plt from pil impor...
Datawhale 零基礎入門CV賽事
在機器學習模型 特別是深度學習模型 的訓練過程中,模型是非常容易過擬合的。深度學習模型在不斷的訓練過程中訓練誤差會逐漸降低,但測試誤差的走勢則不一定。在模型的訓練過程中,模型只能利用訓練資料來進行訓練,模型並不能接觸到測試集上的樣本。因此模型如果將訓練集學的過好,模型就會記住訓練樣本的細節,導致模型...
Datawhale 零基礎入門金融風控(一)
一般而言,對於資料在比賽介面都有對應的資料概況介紹 匿名特徵除外 說明列的性質特徵。了解列的性質會有助於我們對於資料的理解和後續分析。train.csv id 為貸款清單分配的唯一信用證標識 loanamnt 貸款金額 term 貸款期限 year interestrate 貸款利率 install...