k8s二進位制安裝02-前期規劃及containerd設定
卷積神經網路
一、卷積神經網路的特點:
- 平移不變性(translation invariance):不管檢測物件出現在影象中的哪個位置,神經網路的前面幾層應該對相同的影象區域具有相似的反應,即為“平移不變性”。
- 區域性性(locality):神經網路的前面幾層應該只探索輸入影象中的區域性區域,而不過度在意影象中相隔較遠區域的關係,這就是“區域性性”原則。最終,可以聚合這些區域性特徵,以在整個影象級別進行預測。
二、模型:
2.1 模型介紹
每個階段用到的Layer
2.2 模型詳解
- 卷積操作:
- 單通道卷積:\(y=w*x+b(x是輸入,y是輸出,w是卷積核,b是貝葉斯)\)
- 多通道卷積
這裡多通道對應的卷積核也是相應維度的,分別計算出對應維度的結果如何把對應位置的加起來就是最後輸出的降維結果1101 = 805 + 271 + 25
這裡三通道的資料經過一個卷積核得到了一個單通道的表示
- 多通道輸出
通過多個卷積核得到多個特徵然後再堆疊得到一個多通道的輸出Batch
卷積核資訊不變,卷積操作會多一定的倍數(和樣本數有關)。
- 填充操作(padding)
角落邊緣的畫素,只被一個過濾器輸出所使用,因為它位於這個3×3的區域的一角。但如果是在中間的畫素點,就會有許多3×3的區域與之重疊。所以那些在角落或者邊緣區域的畫素點在輸出中採用較少,意味著你丟掉了影象邊緣位置的許多資訊。
使用填充的好處:
- 在原影象外圍以0進行填充,在不影響特徵提取的同時,增加了對邊緣資訊的特徵提取。
- 在做卷積操作時,每經過一次卷積輸入影象大小就會變小,最後經過多次卷積後圖像可能會變得特別小,如果不希望影象變小的話就可以通過填充操作。
- 池化層(pooling)
池化是使用某一位置的相鄰輸出的總體統計特徵代替網路在該位置的輸出,其好處是當輸入資料做出少量平移時,經過池化函式後的大多數輸出還能保持不變。比如:當識別一張影象是否是人臉時,我們需要知道人臉左邊有一隻眼睛,右邊也有一隻眼睛,而不需要知道眼睛的精確位置,這時候通過池化某一片區域的畫素點來得到總體統計特徵會顯得很有用。由於池化之後特徵圖會變得更小,如果後面連線的是全連線層,能有效的減小神經元的個數,節省儲存空間並提高計算效率.
池化的作用 池化層是特徵選擇和資訊過濾的過程,過程中會損失一部分資訊,但是會同時會減少引數和計算量,在模型效果和計算效能之間尋找平衡,隨著運算速度的不斷提高,慢慢可能會有一些設計上的變化,現在有些網路已經開始少用或者不用池化層。
平均池化(Avg Pooling)
對鄰域內特徵點求平均
- 優缺點:能很好的保留背景,但容易使得圖片變模糊
- 正向傳播:鄰域內取平均
- 反向傳播:特徵值根據領域大小被平均,然後傳給每個索引位置
最大池化(Max Pooling)
對鄰域內特徵點取最大
- 優缺點:能很好的保留一些關鍵的紋理特徵,現在更多的再使用Max Pooling而很少用Avg Pooling
- 正向傳播:取鄰域內最大,並記住最大值的索引位置,以方便反向傳播
- 反向傳播:將特徵值填充到正向傳播中,值最大的索引位置,其他位置補0
計算結果的大小公示
2.3. 模型實現
network_2 = nn.Sequential(
nn.Conv2D(in_channels=1, out_channels=6, kernel_size=3, stride=1, padding=1),
nn.ReLU(),
nn.MaxPool2D(kernel_size=2, stride=2),
nn.Conv2D(in_channels=6, out_channels=16, kernel_size=5, stride=1, padding=0),
nn.ReLU(),
nn.MaxPool2D(kernel_size=2, stride=2),
nn.Flatten(),
nn.Linear(in_features=400, out_features=120), # 400 = 5x5x16,輸入形狀為32x32, 輸入形狀為28x28時調整為256
nn.Linear(in_features=120, out_features=84),
nn.Linear(in_features=84, out_features=10)
)
2.4. 模型視覺化
paddle.summary(network_2, (1, 1, 28, 28))
---------------------------------------------------------------------------
Layer (type) Input Shape Output Shape Param #
===========================================================================
Conv2D-49 [[1, 1, 28, 28]] [1, 6, 28, 28] 60
ReLU-13 [[1, 6, 28, 28]] [1, 6, 28, 28] 0
MaxPool2D-13 [[1, 6, 28, 28]] [1, 6, 14, 14] 0
Conv2D-50 [[1, 6, 14, 14]] [1, 16, 10, 10] 2,416 # 16(卷積核個數)X6(卷積核通道 數)X5X5+16(偏置項)
ReLU-14 [[1, 16, 10, 10]] [1, 16, 10, 10] 0
MaxPool2D-14 [[1, 16, 10, 10]] [1, 16, 5, 5] 0
Flatten-10972 [[1, 16, 5, 5]] [1, 400] 0
Linear-43 [[1, 400]] [1, 120] 48,120
Linear-44 [[1, 120]] [1, 84] 10,164
Linear-45 [[1, 84]] [1, 10] 850
===========================================================================
Total params: 61,610
Trainable params: 61,610
Non-trainable params: 0
---------------------------------------------------------------------------
Input size (MB): 0.00
Forward/backward pass size (MB): 0.11
Params size (MB): 0.24
Estimated Total Size (MB): 0.35
---------------------------------------------------------------------------
{'total_params': 61610, 'trainable_params': 61610}