作者hannxnn (hannxnn)
看板Python
標題[問題] 如何在Python中訓練好autoencoder?
時間Sun Aug 4 22:12:20 2024
大家好,
我最近在做論文相關的研究,需要在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之間
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.65.118 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1722780742.A.734.html
1F:→ lycantrope: 長得不像autoencoder 可以去DataScience版問 08/04 23:15
好的 感謝!
2F:推 DaOppaiLoli: learning rate 太高嗎 08/04 23:26
我設定0.01
3F:推 chang1248w: 你為什麼要這樣的一個二維表示? 08/05 01:01
因為要把原始高維數據降維 再來做後續的工作
4F:→ chang1248w: 你的資料有幾筆?有沒有做過標準化?有沒有長尾? 08/05 01:02
原始資料是100*21
5F:→ wuyiulin: 你先確定原始資料的物理意義,再正規化,最後那個0-1也 08/05 01:07
但是轉換完的數據過於集中 不是代表模型沒有訓練好嗎
6F:→ wuyiulin: 不一定是你要的,去思考一下物理意義。 08/05 01:07
7F:→ wuyiulin: 然後這些指導教授應該meeting的時候要帶,去問一下你指 08/05 01:07
他說如果我都是照著流程做的話 那他也不知道問題出在哪了…
8F:→ wuyiulin: 導。 08/05 01:07
※ 編輯: hannxnn (114.27.65.118 臺灣), 08/07/2024 21:43:06
※ 編輯: hannxnn (114.27.65.118 臺灣), 08/07/2024 21:43:45
※ 編輯: hannxnn (114.27.65.118 臺灣), 08/07/2024 21:44:06
※ 編輯: hannxnn (114.27.65.118 臺灣), 08/07/2024 21:44:16
※ 編輯: hannxnn (114.27.65.118 臺灣), 08/07/2024 21:45:13
※ 編輯: hannxnn (114.27.65.118 臺灣), 08/07/2024 21:45:49
9F:→ chang1248w: 要做什麼樣的後續處理? 08/07 21:53
訓練完自編碼器會再訓練深度前饋網絡跟高斯過程模型 然後用高斯過程模型來預測均值 用指標函數來做可靠度估計
10F:→ chang1248w: 你這資料量太少了,放棄DL吧 08/07 21:57
11F:→ chang1248w: 用pca或者umap 08/07 22:00
12F:→ chang1248w: 如果你要硬上,那用個兩層16 node就好 08/07 22:02
13F:→ chang1248w: 然後確認有做標準化,有長尾那loss可以改用log cosh 08/07 22:05
好的 我再試試看這個 感謝!
14F:→ wuyiulin: 你資料只有100筆的話,怎麼做都會這樣。 08/08 12:02
我也是這樣想 但就原作者的範例中他是做得出來的 感覺是有漏掉些什麼 或是作者沒有提出來的
15F:→ wuyiulin: 不是要詆毀你老師,但是照流程做不知道問題出在哪裡, 08/08 12:04
16F:→ wuyiulin: 這老師不提供指導的話可以換一個(#。 08/08 12:04
17F:→ wuyiulin: 技術上的問題還有幾個,你資料上下限值是多少? Decode 08/08 12:05
請問一下資料上下限值是什麼意思
18F:→ wuyiulin: r 怎麼寫的?現在 MSE 測出來多少? 08/08 12:05
19F:→ wuyiulin: 我會問 Decoder 是因為:如果你 通道數量是 21,第一層 08/08 12:06
解碼器部分是 2/32/64/128/256/512/1024 輸出形狀是21 這樣
20F:→ wuyiulin: 就直接打 1024 那邊有點微妙。 08/08 12:06
21F:→ dobedobedo: 直接做PCA看看變異數多少呀 08/08 12:55
好的 我試試看 謝謝~
※ 編輯: hannxnn (42.77.41.104 臺灣), 08/08/2024 16:07:42
※ 編輯: hannxnn (42.77.41.104 臺灣), 08/08/2024 16:09:55
※ 編輯: hannxnn (42.77.41.104 臺灣), 08/08/2024 16:10:21
※ 編輯: hannxnn (42.77.41.104 臺灣), 08/08/2024 16:11:27
※ 編輯: hannxnn (42.77.41.104 臺灣), 08/08/2024 16:13:33
※ 編輯: hannxnn (42.77.41.104 臺灣), 08/08/2024 16:15:02
22F:→ chang1248w: 你的後續沒有必要接一個ae吧,直接21維下去做也行 08/08 16:58
目前就是照教授説 跟著paper的內容實作看看~
※ 編輯: hannxnn (114.27.65.118 臺灣), 08/09/2024 07:18:54
23F:推 charliedung: paper只用100筆如果沒有預訓練你也沒辦法復現方法也 08/09 07:47
了解 原來如此
24F:→ charliedung: 都對 要考慮是不是那篇paper...ry 08/09 07:47
25F:→ chang1248w: 很明顯你們教授就不是這個領域的 08/09 13:55
:(((
※ 編輯: hannxnn (114.27.65.118 臺灣), 08/09/2024 15:09:57
※ 編輯: hannxnn (114.27.65.118 臺灣), 08/09/2024 15:19:37
26F:推 uncouth: Paper 是哪篇 可否分享一下? 08/12 09:48
是 " Deep learning for high-dimensional reliability analysis"
27F:→ wuyiulin: 資料的上下限我舉個例子,如果一張 RGB 圖片他的通道值 08/12 11:51
28F:→ wuyiulin: 最低就是 0 最高就是 255(如果是 uint8) 08/12 11:51
了解
29F:→ wuyiulin: 你對手上資料上下限有概念嗎?這與 activate func 有關 08/12 11:53
我的資料是一組常態分佈 mean是3.41 standard deviation是0.2 20維 然後有100個初始樣本
30F:→ wuyiulin: 然後我在隔壁板看到你提到重建誤差,推測你下游任務是 08/12 11:58
31F:→ wuyiulin: GAI 之類的,如果是這種就自己生一個模擬21維去打, 08/12 11:58
32F:→ wuyiulin: 看重建結果就能知道模型哪裡沒處理好。 08/12 11:58
感謝
好的 我試試看
※ 編輯: hannxnn (36.236.209.27 臺灣), 08/14/2024 00:16:35
※ 編輯: hannxnn (36.236.209.27 臺灣), 08/14/2024 00:17:18
※ 編輯: hannxnn (36.236.209.27 臺灣), 08/14/2024 00:19:53
※ 編輯: hannxnn (36.236.209.27 臺灣), 08/14/2024 00:20:26
※ 編輯: hannxnn (36.236.209.27 臺灣), 08/14/2024 00:20:43
33F:推 charliedung: paper有提到用mcs抽樣到10萬筆 有跟著做嗎 內文沒提 08/14 02:00
有的 但10萬筆的MCS也是在訓練完自編碼器才會用到
34F:→ charliedung: 到 另外他神經元是用20,20,20,2 你要增加神經元的數 08/14 02:00
35F:→ charliedung: 量訓練資料就要跟著增加不是越多越好 08/14 02:00
然後我目前是在做4.1 case study I 20D那個例子 感謝
所以我的編碼器部分是用4層20,20,20,2這樣子嗎 謝謝
※ 編輯: hannxnn (36.236.209.27 臺灣), 08/14/2024 09:39:43
※ 編輯: hannxnn (36.236.209.27 臺灣), 08/14/2024 09:40:24
※ 編輯: hannxnn (36.236.209.27 臺灣), 08/14/2024 09:47:08
36F:推 charliedung: 對 先照他的方法設定有需要再調整 08/14 23:43
好的謝謝 我目前有跟著這樣做了
※ 編輯: hannxnn (36.236.187.141 臺灣), 08/16/2024 01:01:02