動手學深度學習TF2.0第十課: 卷積層中的超參數調整

卷積層的輸出形狀由輸入形狀和卷積窗口形狀來決定。如假設輸入的形狀爲n(h) * n(w), 卷積核窗口形狀是k(h) * k(w), 那麼輸出形狀將會是 (n(h) - k(h) +1) * (n(w) - k(w) +1).

1. 超參數調整

由上討論,可引出兩個超參數: 填充和步幅.

  • 填充
''' 
填充(padding): 是指在輸入的高和寬兩側填充元素(通常爲0). 填充的小技巧:
	1. 一般情況下,會填充一定的行,從而使得輸入尺寸與輸出尺寸相同;
	2. 假設在高一共填充p(h)行, 在寬一共填充p(w)行, 那麼輸出形狀會是:(n(h)-k(h)+p(h)+1) * (n(w)-k(w)+p(w)+1);
	> 爲了保持技巧1滿足, 一般我們設置p(h) = k(h)-1, p(w) = k(w)-1; 
	> 因爲填充會均勻填充在輸入的左右兩側,即每一側填充p(h)/2; 所以,卷積核k常常取奇數,如1/3/5/7;
'''
  • 步幅
'''
步幅(stride): 卷積核在輸入數組上每次滑動的行數和列數稱爲步幅;
	1. 步幅的設置可以減小輸入數組的尺寸;
	2. 假設高的步幅爲s(h), 寬的步幅爲s(w), 則輸出的形狀爲:
			 ((n(h)-k(h)+p(h)+s(h))/s(h))*((n(w)-k(w)+p(w)+s(w))/s(w)).
'''
  • 通道數

  • 池化層

'''
池化層:(pooling): 它的提出是爲了緩解卷積層對位置的過度敏感性。 
	1. 池化層直接計算池化窗口內元素的最大值(最大池化)或平均值(平均池化);
	2. 可以指定池化層的填充和步幅;
	3. 在處理多通道輸入數據時,池化層對每個輸入通道分別池化,而不是像卷積層那樣將各通道的數據按通道疊加;
	
'''

2. 卷積神經網絡

卷積神經網絡就是含卷積層的網絡.

卷積層嘗試解決這兩個問題:
	1. 卷積層保留輸入形狀,使圖像的像素在高和寬兩個方向上的相關性均可能被有效識別;
	2. 卷積層通過滑動窗口將同一卷積核與不同位置的輸入重複計算,從而避免參數尺寸過大。

3. LetNet模型

LetNet模型: 一個早期用來識別手寫數字圖像的卷積神經網絡, LeNet展示了通過梯度下降訓練卷積神經網絡可以達到手寫數字識別在當時最先進的結果。這個奠基性的工作第一次將卷積神經網絡推上舞臺,爲世人所知.

LeNet分爲卷積層塊和全連接層塊兩個部分. 
	1. 卷積層塊 = 卷積層 + 最大池化層. 卷積層用來識別圖像裏的空間模式,如線條和物體局部,之後的最大池化層則用來降低卷積層對位置的敏感性。卷積層塊由兩個這樣的基本單位重複堆疊構成。
	"卷積層塊的輸出形狀爲(批量大小, 通道, 高, 寬)"

	2. 當卷積層塊的輸出傳入全連接層塊時,全連接層塊會將小批量中每個樣本變平(flatten), 也就是全連接層的輸入形狀將變成二維,(小批量樣本, 數據向量(通道×高×寬))
	
	3. 卷積層緊接着池化層, 所以下一層的卷積層的尺寸由上一層的池化層尺寸來進行估算;
	

4. 深度卷積神經網絡(AlexNet)

AlexNet 與 LeNet理念相似,但有着極大的改善.


1. 與相對較小的LeNet相比,AlexNet包含8層變換,其中有5層卷積和2層全連接隱藏層,以及1個全連接輸出層;
2. AlexNet將sigmoid激活函數改成了更加簡單的ReLU激活函數;
3. AlexNet通過`丟棄法`來控制全連接層的模型複雜度。而LeNet並沒有使用丟棄法;
4. AlexNet引入了大量的`圖像增廣`,如翻轉、裁剪和顏色變化,從而進一步擴大數據集來緩解過擬合;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章