想請問Conv2D的使用時機以及其中參數該如何決定?
您好, 1. 想請問Conv2D的使用時機? 2. 以及其中參數該如何決定? ```python Conv2D(64, (3, 3), padding='same', input_shape=x_train.shape[1:]) ``` 其中 64 和 (3, 3) 代表什麼意思?以即該如何決定呢? 3. 使用Conv2D和使用Dense有什麼差別?如果每一層都使用Dense的話可以嗎?
回答列表
-
2020/12/13 下午 08:13李柏霆贊同數:1不贊同數:0留言數:0
1. 主要用於圖像辯識 2. 64 代表 filter 的個數,(3,3) 代表filter 的大小是3x3(64個3x3 的filter堆疊起來),針對於初學者,我會建議先試著使用LeNet,AlexNet ,VGG等經典的卷積網路,通常隨著層數遞增,我們會讓filter 數目增加,另外針對filter 的大小,設太小會增加計算量,設太大則會讓原本圖形變的很小,3x3和5x5 的filter都是常見的選項 3. 通常到了fully connection layer (全連接層),我們才會使用Dense ,針對convolution層和 全連接層的差別,其實convolution就是一個neural network。convolution這件事情,其實就是 fully connected 的layer把一些weight拿掉而已,另外convolution層基本精神是共享參數,不管輸入的大小為何,使用的參數量都是固定的
-
2020/12/13 下午 10:49Noah贊同數:0不贊同數:0留言數:0
Hi: 前面已經有專家回答的部分我就不贅述,我補充一些: 2. 3x3的filter size最常見,雖然偶爾有5x5的filter size出現,但你還是可以很放心的填3x3,因為5x5=25,至少就有25次的乘法運算量,而5x5可以等校2個3x3,2個3x3=9+9=18次乘法運算量,是不是比5x5=25少一些呢,所以目前大部分paper都填3x3居多,然後疊conv的深度決定推理能力. 3. 雖然用Dense也可以,但圖像的輸入盡量都用conv為主,直到最後幾層可能才轉Dense,如前一位專家所說conv是共享參數,Dense全連每個pixel都有參,所以一開始採用Dense做圖像處理遭遇的問題就會變成權重非常多.舉例:一個128x128 ch=1的圖片,直接接Dense,需要的權重數量正是128x128=16384,才一層而已就16k x 下一層filter數個權重,但用3x3 conv,權重才9 x 下一層filter數個權重而已,所以在圖像處理中以conv運算為主.且影像處理中conv能做的事很多,如:影像去雜訊、模糊化、邊緣偵測、角點偵測等...,簡單來說透過學習的方式可以讓模型用各種方式、各種角度抓取圖中的一些特徵,又稱特徵工程. 額外補充:以近期圖像方面的深度學習用Dense的場合不多,主要是attention機制會用到,這個稍微進階一點.其餘情況大部分最後幾層使用Dense目的是做classification的輸出,但近期做classification的輸出以global average pooling(GAP)為主非Dense,當然也可以GAP接Dense.額外補充的可以自行google額外多做了解.
-
2020/12/16 下午 03:48張維元 (WeiYuan)贊同數:0不贊同數:0留言數:0
嗨,你好
補充一下,參數的部分可以先參考官方文件:https://keras.io/api/layers/convolution_layers/convolution2d/
嗨,你好,我是維元,持續在不同的平台發表對 #資料科學、 #網頁開發 或 #軟體職涯 相關的文章。如果對於內文有疑問都歡迎與我們進一步的交流,都可以追蹤我的 Facebook 或 技術部落格 ,也會不定時的舉辦分享活動,一起來玩玩吧 ヽ(●´∀`●)ノ
-
2020/12/23 下午 05:42Jeffrey贊同數:0不贊同數:0留言數:0
Conv2D - 使用場景主要是解析多通道, 比如說 RGB 彩色圖片, 同時針對 R, G, B 給定相同數目的filter, 粹取特徵