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