高焕堂AI创新学习专区
直播中

小伍

9年用户 4814经验值
擅长:电源/新能源 嵌入式技术
私信 关注
[经验]

可视化轻松学AI:CNN卷积观念

`在本文裡,與您分享我可視化AI的學習之路。對於一些菁英高手而言,像Keras+TF可以把Py程式寫得很簡潔的。然而,愈是簡潔,對於入門學生或非資訊系學生而言,就只能像門外人一樣<看熱鬧>了。為了讓中學生、非訊息科系大學生們也能輕鬆看門道。例如,簡潔的十行Python代碼就可以建立一個典型的CNN模型:
  1. #------ Python 代碼範例 ----------------------------------------
  2. conv = Conv2D(2, (2, 2), padding='valid', activation='relu', input_shape=(5, 5, 1))
  3. poo = MaxPooling2D(pool_size=(2, 2), strides=2, padding='valid')
  4. d = Dense(2, activation='softmax', name="Dense")
  5. #--------------------------------------------------
  6. model = Sequential()
  7. model.add(conv)
  8. model.add(poo)
  9. model.add(Flatten())
  10. model.add(d)
  11. #--------------------------------------------------
  12. model.compile(loss=keras.losses.categorical_crossentropy,
  13.               optimizer=keras.optimizers.SGD(lr=0.08),
  14.               metrics=['accuracy'])
  15. model.fit(dx, dt, 1, 100, 0, shuffle=False)
  16. #---------------------------------------------------------------
這個AI模型裡包含:一個卷積層 + 一個Pooling層 + 一個Flatten層 + 一個Dense層。我來用Excel的三個頁面,將上述十行程式碼,加以視覺化。
1.png
這呈現出了卷積層,由兩個Y嬛去探索一隻玩具兔,得到卷積結果,呈現於下一頁:
2.png
上圖左邊就是兩個Y嬛卷積的結果( feature )。這個動作通稱為特徵提取。接著,按下,就推進到Pooling層:
3.png
同時也繼續往下推進到Flatten層,進入第 3頁面:
4.png
上圖的左邊就是Flatten層,中間和右邊就是Dense層(例如採Softmax激活函數)。整個Feed-Forward過程都呈現出來了。接下來,運用BP黃金三公式來解釋整個BP流程。繼續按下<第1&2公式>,就做兩件事:
1) 從Error計算出Delta(敏感度),這是第1公式的事情。

2) 從將本層的Delta(敏感度)像波浪的漣漪效應般,逆向推回前一層(這是第2公式的事情):
5.png
  此時,已經推回到Pooling層了。 按下,就將漣漪繼續反向推到前一層(卷積層):
6.png
上圖的右邊就是漣漪效應逆推回來的Delta,這都是第2公式的運算。接下來執行<第3公式>,計算各層權重的修正值(dw和db)。繼續按下<第3公式>:
7.png
這圖裡呈現出來卷積層的權重。此外,在第3頁,還有Dense層的權重:
8.png
最後,按下第1頁的<修正W和B>,就實際更新權重值:
9.png
由於這BP黃金三公式是如此地神奇。如同牛頓力學的三個定律。其計算出來的結果與Keras+TF的結果是完全一樣的:
10.png
上圖下方是Dense層的權重更新結果,是由十行Keras+TF代碼所執行出來的結果,但是其運算算的過程是隱藏的。上半部的Excel則把過程呈現出來。同樣地,在卷積層裡,也是同樣情形。由十行Keras+TF代碼所執行出來的結果:
11.png
但是,其運算算的過程是隱藏的。上半部的Excel則把過程呈現出來。

以上是我第二本書的範例,与您搶鲜分享。也歡迎參考我的《不編程,而學AI:Excel+TensorFlow》一書:

~ End ~

` 12.png

更多回帖

发帖
×
20
完善资料,
赚取积分