神經網路 CNN 名詞解釋
隱藏層
不是輸入或輸出層的所有層都稱為隱藏層.
啟用和池化都沒有權重
使層與操作區分開的原因在於層具有權重。由於池操作和啟用功能沒有權重,因此我們將它們稱為操作,並將其視為已新增到層操作集合中。
例如,我們說網路中的第二層是一個卷積層,其中包含權重的集合,並執行三個操作,即卷積操作,relu啟用操作和最大池化操作。
傳入Linear層之前展平張量
在將輸入傳遞到第一個隱藏的Linear層之前,我們必須reshape()或展平我們的張量。每當我們將卷積層的輸出作為Linear層的輸入傳遞時,都是這種情況。
正向傳播
正向傳播是將輸入張量轉換為輸出張量的過程。神經網路的核心是將輸入張量對映到輸出張量的功能,而正向傳播只是將傳遞輸入到網路並從網路接收輸出的過程的特殊名稱。
in_channels
對於最初輸入圖片樣本的通道數in_channels取決於圖片的型別,如果是彩色的,即RGB型別,這時候通道數固定為3,如果是灰色的,通道數為1。
out_channels
卷積完成之後,輸出的通道數out_channels取決於過濾器的數量。從這個方向理解,這裡的out_channels設定的就是過濾器的數目。
對於第二層或者更多層的卷積,此時的 in_channels 就是上一層的 out_channels , out_channels 還是取決於過濾器數目。
為什麼GPU在深度學習中能夠如此廣泛的使用?
因為神經網路是易並行的(embarrassing parallel),即:很容易就能夠將任務分解成一組獨立的小任務;神經網路的很多計算都可以很容易地分解成更小的相互獨立的計算,這使得GPU在深度學習任務中非常有用。
一個卷積核對一張影象進行卷積的每個運算是獨立且相繼發生的,故可將其分成一個個小任務,使用GPU加速運算; (影象分塊後送入神經網路是否同理?)
張量
- 張量是神經網路中使用的主要資料結構,網路中的輸入、輸出和轉換均使用張量表示.
- 張量與張量之間的運算必須是相同資料型別在相同的裝置上發生的.
- 張量是包含一個同一型別的資料.
索引數量 | 電腦科學中的名稱 | 數學中的名稱 | Tensor表示 |
---|---|---|---|
0 | 數字 | 標量 | 0維張量 |
1 | 陣列 | 向量 | 1維張量 |
2 | 二維陣列 | 矩陣 | 2維張量 |
n | N維陣列 | N維張量 | n維張量 |
張量的屬性(階,軸,形狀)
階
- 張量的階是指張量中的維數。假設我們有一個二階張量。這意味著以下所有內容:
- 一個張量的秩告訴我們需要多少個索引來訪問或引用張量結構中包含的特定資料元素
軸
- 一個張量的軸是一個張量的一個特定維度。
- 對於張量,其最後一個軸的元素均為數字。
- 假設有個張量是一個2階的張量,這意味著這個張量有2個維度,或者等價於,張量有 2 個軸。
形狀
- 張量的形狀由每個軸的長度決定(知道了張量的形狀就可知道每個軸的索引)。
- 3 x 3的形狀告訴我們,這個2階張量的每個軸的長度都是3,這意味著我們有三個沿著每個軸可用的索引。
張量輸入到神經網路
- CNN輸入張量的長度通常為4:[batchsize,color_channel,height,width];通過這4個索引,可以在特定影象的特定顏色通道中導航到特定的畫素;
- 卷積神經網路的樣本輸入通常是批量的而不是單個的;
- 張量經過卷積層後的變化:卷積會改變高度、寬度以及顏色通道的數量;通道數與濾波器的數量有關;濾波器的大小會影響到高度和寬度;
- 經過卷積的通道不再叫彩色通道(已被改變),而叫做特徵通道(特徵圖:輸入顏色通道和卷積濾波器所產生的卷積結果)
- 輸出通道 = 特徵通道 = 特徵對映
CNN構建及網路引數的使用
Parameter和Argument的區別
- Parameter在函式定義中使用,可將其看作是佔位符;(形參)
- Argument是當函式被呼叫時傳遞給函式的實際值;(實參)
Parameter的兩種型別
Hyperparameters
其值是手動和任意確定的;要構建神經網路:kernel_size,out_channels,out_features都需要手動選擇.
Data dependent Hyperparameters
其值是依賴於資料的引數
- 該引數位於網路的開始或末端,即第一個卷積層的輸入通道和最後一個卷積層的輸出特徵圖
- 第一個卷積層的輸入通道依賴於構成訓練集的影象內部的彩色通道的數量(灰度影象是1,彩色影象是3)
- 輸出層的輸出特徵依賴於訓練集中類的數量(fashion-MNIST資料集中的型別為10,則輸出層的out_features=10)
- 通常情況下,一層的輸入是上一層的輸出(即:卷積層中所有輸入通道和線性層中的輸入特徵都依賴於上一層的資料)
當張量從卷積層傳入線性層時,張量必須是flatten的
Parameter | Description |
---|---|
kernel_size | 設定濾波器的大小;濾波器的數量就是輸出通道數 |
out_channels | 設定濾波器的數量,即為輸出通道數 |
out_features | 設定輸出張量的大小 |
訓練神經網路的七個步驟
- 從訓練集中獲取批量資料
- 將批量資料傳入網路
- 計算損失(預測值與真實值之間的差)【需要loss function實現】
- 計算損失函式的梯度 【需要back propagation實現】
- 通過上一步計算的梯度來更新權重,進而減少損失【需要optimization algorithm實現】
- 重複1-5步直到一個epoch執行完成
- 重複1-6步直到所設定的epochs執行完成並得到滿意的accuracy #### 3.12.2 單批次影象訓練
每個週期的迭代數
資料總數/batchsize(當改變batchsize時,也就是改變了更新權重的次數,也就是朝損失函式最小的防線前進的步數)
梯度
告訴我們應該走哪條路能更快的到達loss最小
多數名詞解釋都是從下面的連結複製:
https://blog.csdn.net/flyfor2013/article/details/106394341
https://github.com/wanyueli/DeepLizard-pytorch-/blob/master/Pytorch構建神經網路(一).ipynb