[問題] autoencoder train不起來

看板DataScience作者 (NDE)時間2年前 (2022/08/24 05:57), 2年前編輯推噓0(0018)
留言18則, 2人參與, 2年前最新討論串1/1
作業系統: win10 問題類別: DL 使用工具: Keras in TF2 問題內容: 嘗試建一個autoencoder 來reconstruct輸入的影像,結果ouput 出來幾乎都是0,224個 channels 裡只有兩個不是全0的影像,那兩個不是全0的影像也完全不像輸入的影像,就 兩個亮點。把每一層輸出抓出來看,發現有幾層的feature map全部都是0,其他層約有55 %的 feature map全部都是0。google不太到類似經驗,希望來板上取得靈感Q_Q model訓練好後希望看每層feature map長怎樣,尤其是想看哪些channel沒什麼貢獻,所 以想保留影像的shape。 input: 從大張的影像隨機切36x36x224的植物影像,其中224個channels 都是從0-1,代表反射率 ,大部分的pixel 值小於0.5,因為想保留物理意義且全部的值都在0-1之間所以沒額外做 normalization。validation 跟testing 時用固定的影像。 model1: eocoder decoder各三層,encoder三層都用keras的conv2D,filter數量都是224,kernel size都是3,stride都是1,activation function 都是relu,padding=same。decoder就 把conv2Dtranspose 回來。 loss function 是mse model2: 一樣架構,但把activation function 換成leakyrelu,最後一層的activation function 換成tanh(我看李宏毅老師的作業這樣改我就無腦跟著改) model3: 一樣架構,鑒於model2也失敗,覺得leakyrelu可能沒差,於是改回relu。仔細想了一下t anh的ouput是-1到1,但影像都是0-1,所以最後一層改用sigmoid,還是失敗。 訓練參數: learning rate 0.001, 0.01, 0.05, 0.1(試了四組都train不起來) optimization Adam epoch 3以後每個epoch的validation loss都一樣,代表model大概沒在動。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 98.223.102.101 (美國) ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1661291830.A.5D3.html

08/24 15:34, 2年前 , 1F
loss curve貼一下
08/24 15:34, 1F

08/24 15:38, 2年前 , 2F
你stride都1這樣沒降維吧 autoencode的目的是?
08/24 15:38, 2F
我想看有沒有channel 會被autoencoder drop掉,然後想看model對不同波段做了什麼事

08/24 15:39, 2年前 , 3F
雖然你遇到的問題可能跟架構也沒什麼關係
08/24 15:39, 3F

08/24 15:39, 2年前 , 4F
應該寫錯code(?
08/24 15:39, 4F
code是公司ml工程師寫的,我改了一點以後兩個一起檢查過了應該沒問題。

08/24 18:20, 2年前 , 5F
怎麼樣把一張圖片切出36*36*224的...東西
08/24 18:20, 5F

08/24 18:20, 2年前 , 6F
我參不透
08/24 18:20, 6F
我們的相機是特殊的相機,本身就有224個波段,我只是切個36x36pixel下來

08/24 18:21, 2年前 , 7F
你貼個preprocessing 和model implement 的code好不
08/24 18:21, 7F

08/24 18:21, 2年前 , 8F
有時候實現出來不完全是你想的那樣
08/24 18:21, 8F
--- 因為資料是美國管制資料所以我不能拍照也不能截圖QQ ※ 編輯: NDEJG (98.223.102.101 美國), 08/24/2022 21:51:18

08/24 23:00, 2年前 , 9F
大致了解
08/24 23:00, 9F

08/24 23:05, 2年前 , 10F
autoencoder會train成什麼形狀,取決於你給他的訓練
08/24 23:05, 10F

08/24 23:05, 2年前 , 11F
任務,我們通常會移植其中的一部分來做其他的事情,
08/24 23:05, 11F

08/24 23:05, 2年前 , 12F
諸如分類和生成圖像
08/24 23:05, 12F

08/24 23:11, 2年前 , 13F
code看也不好說什麼了
08/24 23:11, 13F

08/24 23:44, 2年前 , 14F
你先用原本會變瘦的版本試試吧
08/24 23:44, 14F
更新: 把最後一層activation function 改成linear就有不錯成果了,另外我誤會keras conv2D 做的事了,即使filter size跟channels 一樣多每個filter也還是從多個channel去取fea ture ,不過從每層feature看來有一部分的feature map還是全部都0,filter數量應該夠 ,有錯請指正 ※ 編輯: NDEJG (128.210.107.88 美國), 08/25/2022 00:53:04

08/25 09:42, 2年前 , 15F
全零大概就是被relu吸收掉的那些樣本
08/25 09:42, 15F

08/25 09:43, 2年前 , 16F
你想找的應該是depthwise conv
08/25 09:43, 16F

08/25 09:45, 2年前 , 17F
沒有bottle neck structure 那你的autoencoder 最佳
08/25 09:45, 17F

08/25 09:45, 2年前 , 18F
解自然就是identity transform
08/25 09:45, 18F
文章代碼(AID): #1Z1KqsNJ (DataScience)
文章代碼(AID): #1Z1KqsNJ (DataScience)