※ 引述《wavek (壞貓咪)》之銘言:
: 假設今天我的數據是一百張CIFAR10的圖片
: 32 * 32 color RGB, 10 classes
: 我的架構如下, 當然重點其實只在我的Input layer有四個節點
: https://imgur.com/EOYvM4z
: 那我的數據會怎麼樣進入輸入層???
: (1)
: 100張圖片分成四份
: 每個節點有25張圖片進入
: (2)
: 每個節點都會有完整的100張圖片進入
: (3)
: 100張圖片
: 每張圖片會被分成四等分
: 然後每一等分分別進入不同的節點
: (4)
: 還有聽到個說法
: 沒有所謂的輸入層
: 那個只是視覺化表現比較方便
: 阿 那數據是怎麼輸入的XD
: 還是是其他方式, 有大神可以平易近人的說明嗎QQ
在極度特殊的情況下, 如果你能發現輸入資料潛在的特徵, 可以利用
特定四個點的某個顏色的值, 例如照片四個角落的紅色值, 做為輸入
層的四個節點, 就能達到令人滿意的辨識度(比方說測試樣本的正確率
>95%), 那麼輸入層只有4個節點為何不可以呢?
只是, CIFAR10照片集並不是極度特殊的情況, 所以輸入層只有4個節
點, 很難透過多個多節點隱藏層來獲得一般人能夠接受的正確辨識率.
因此, 建議剛開始嘗試Keras時, 仍然以每個點的RGB值, 總共32*32*3
=3072節點放在輸入層, 較能得到不錯的辨識正確率. 之後, 你就可
嘗試減少輸入層節點數, 例如只取奇數列的32個點, 於是輸入層只剩
16(列)*32(欄)*3(色)=1536個節點, 或是進一步把RGB三色用灰階來表
示, 於是輸入層只剩16(列)*32(欄)*1(色)=512個節點.
其實, 對於照片或影像這種二維空間的資料, 使用CNN可能是更好的做
法. 所以, 輸入層不會是排成一維的I個節點, 而是二維J*K=I個節點.
處理完CNN後, 才會把CNN的二維輸出層扁平化, 變成一維的輸入層,
再經過多個多節點隱藏層直到輸出層(例如CIFAR10的十個分類就有10
個輸出層節點). 所以, 假如你在CNN不斷萃取之後, 輸出層就是只剩
4個節點, 那麼扁平化之後, 輸入層當然也是只有4個節點. 這又是另
外一種情況, 與前面所述照片未經CNN處理, 直接拿四個角落的紅色值
當輸入層完全不同. 你若瞭解CNN就會知道我的意思.
總之, Keras是一個不錯的工具, 初學者很容易上手, 但要真正熟悉
Keras, 還是需要多多嘗試各種網路架構的組合(例如不要扁平化的全
CNN), 才能更加清楚深度學習的奧妙.