[問題] 如何在Python中訓練好autoencoder?

作者: hannxnn (hannxnn)   2024-08-04 22:12:20
大家好,
我最近在做論文相關的研究,需要在Python中訓練一個autoencoder(自編碼器)。目前
遇到了一些困難,希望能得到大家的幫助。
以下是我目前的工作進展和遇到的問題:
主要是想把一個21維的問題降維成2維
1. 我使用了TensorFlow和Keras來搭建autoencoder模型。模型結構如下:
- 使用GlorotUniform進行初始化。
- 編碼器包含多個層,每個層使用Sigmoid激活函數和L2正則化,並在每層後面加入
Dropout層。具體結構如下:
- 第一層:1024個神經元,輸入形狀為21
- 第二層:512個神經元
- 第三層:256個神經元
- 第四層:128個神經元
- 第五層:64個神經元
- 第六層:32個神經元
- 最後一層:2個神經元
- 解碼器結構對稱於編碼器,輸入形狀為2
2. 我使用了SGD優化器和均方誤差(MSE)作為損失函數
3. 訓練過程中,發現模型的重建誤差一直無法降低,訓練結果的資料點很集中,不像論文中在0-1之間
作者: lycantrope (阿寬)   2024-08-04 23:15:00
長得不像autoencoder 可以去DataScience版問
作者: DaOppaiLoli (大歐派蘿莉)   2024-08-04 23:26:00
learning rate 太高嗎
作者: chang1248w (彩棠)   2024-08-05 01:01:00
你為什麼要這樣的一個二維表示?你的資料有幾筆?有沒有做過標準化?有沒有長尾?
作者: wuyiulin (龍破壞劍士-巴斯達布雷達)   2024-08-05 01:07:00
你先確定原始資料的物理意義,再正規化,最後那個0-1也不一定是你要的,去思考一下物理意義。然後這些指導教授應該meeting的時候要帶,去問一下你指導。
作者: chang1248w (彩棠)   2024-08-07 21:53:00
要做什麼樣的後續處理?你這資料量太少了,放棄DL吧用pca或者umap如果你要硬上,那用個兩層16 node就好然後確認有做標準化,有長尾那loss可以改用log cosh
作者: wuyiulin (龍破壞劍士-巴斯達布雷達)   2024-08-08 12:02:00
你資料只有100筆的話,怎麼做都會這樣。不是要詆毀你老師,但是照流程做不知道問題出在哪裡,這老師不提供指導的話可以換一個(#。技術上的問題還有幾個,你資料上下限值是多少? Decoder 怎麼寫的?現在 MSE 測出來多少?我會問 Decoder 是因為:如果你 通道數量是 21,第一層就直接打 1024 那邊有點微妙。
作者: dobedobedo (DoBe)   2024-08-08 12:55:00
直接做PCA看看變異數多少呀
作者: chang1248w (彩棠)   2024-08-08 16:58:00
你的後續沒有必要接一個ae吧,直接21維下去做也行
作者: charliedung (aaa)   2024-08-09 07:47:00
paper只用100筆如果沒有預訓練你也沒辦法復現方法也都對 要考慮是不是那篇paper...ry
作者: chang1248w (彩棠)   2024-08-09 13:55:00
很明顯你們教授就不是這個領域的
作者: uncouth (oo)   2024-08-12 09:48:00
Paper 是哪篇 可否分享一下?
作者: wuyiulin (龍破壞劍士-巴斯達布雷達)   2024-08-12 11:51:00
資料的上下限我舉個例子,如果一張 RGB 圖片他的通道值最低就是 0 最高就是 255(如果是 uint8)你對手上資料上下限有概念嗎?這與 activate func 有關然後我在隔壁板看到你提到重建誤差,推測你下游任務是GAI 之類的,如果是這種就自己生一個模擬21維去打,看重建結果就能知道模型哪裡沒處理好。
作者: charliedung (aaa)   2024-08-14 02:00:00
paper有提到用mcs抽樣到10萬筆 有跟著做嗎 內文沒提到 另外他神經元是用20,20,20,2 你要增加神經元的數量訓練資料就要跟著增加不是越多越好

Links booklink

Contact Us: admin [ a t ] ucptt.com