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

看板Python作者 (hannxnn)時間4月前 (2024/08/04 22:12), 4月前編輯推噓6(6030)
留言36則, 7人參與, 4月前最新討論串1/2 (看更多)
大家好, 我最近在做論文相關的研究,需要在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

08/04 23:15, 4月前 , 1F
長得不像autoencoder 可以去DataScience版問
08/04 23:15, 1F
好的 感謝!

08/04 23:26, 4月前 , 2F
learning rate 太高嗎
08/04 23:26, 2F
我設定0.01

08/05 01:01, 4月前 , 3F
你為什麼要這樣的一個二維表示?
08/05 01:01, 3F
因為要把原始高維數據降維 再來做後續的工作

08/05 01:02, 4月前 , 4F
你的資料有幾筆?有沒有做過標準化?有沒有長尾?
08/05 01:02, 4F
原始資料是100*21

08/05 01:07, 4月前 , 5F
你先確定原始資料的物理意義,再正規化,最後那個0-1也
08/05 01:07, 5F
但是轉換完的數據過於集中 不是代表模型沒有訓練好嗎

08/05 01:07, 4月前 , 6F
不一定是你要的,去思考一下物理意義。
08/05 01:07, 6F

08/05 01:07, 4月前 , 7F
然後這些指導教授應該meeting的時候要帶,去問一下你指
08/05 01:07, 7F
他說如果我都是照著流程做的話 那他也不知道問題出在哪了…

08/05 01:07, 4月前 , 8F
導。
08/05 01:07, 8F
※ 編輯: 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

08/07 21:53, 4月前 , 9F
要做什麼樣的後續處理?
08/07 21:53, 9F
訓練完自編碼器會再訓練深度前饋網絡跟高斯過程模型 然後用高斯過程模型來預測均值 用指標函數來做可靠度估計

08/07 21:57, 4月前 , 10F
你這資料量太少了,放棄DL吧
08/07 21:57, 10F

08/07 22:00, 4月前 , 11F
用pca或者umap
08/07 22:00, 11F

08/07 22:02, 4月前 , 12F
如果你要硬上,那用個兩層16 node就好
08/07 22:02, 12F

08/07 22:05, 4月前 , 13F
然後確認有做標準化,有長尾那loss可以改用log cosh
08/07 22:05, 13F
好的 我再試試看這個 感謝!

08/08 12:02, 4月前 , 14F
你資料只有100筆的話,怎麼做都會這樣。
08/08 12:02, 14F
我也是這樣想 但就原作者的範例中他是做得出來的 感覺是有漏掉些什麼 或是作者沒有提出來的

08/08 12:04, 4月前 , 15F
不是要詆毀你老師,但是照流程做不知道問題出在哪裡,
08/08 12:04, 15F

08/08 12:04, 4月前 , 16F
這老師不提供指導的話可以換一個(#。
08/08 12:04, 16F

08/08 12:05, 4月前 , 17F
技術上的問題還有幾個,你資料上下限值是多少? Decode
08/08 12:05, 17F
請問一下資料上下限值是什麼意思

08/08 12:05, 4月前 , 18F
r 怎麼寫的?現在 MSE 測出來多少?
08/08 12:05, 18F

08/08 12:06, 4月前 , 19F
我會問 Decoder 是因為:如果你 通道數量是 21,第一層
08/08 12:06, 19F
解碼器部分是 2/32/64/128/256/512/1024 輸出形狀是21 這樣

08/08 12:06, 4月前 , 20F
就直接打 1024 那邊有點微妙。
08/08 12:06, 20F

08/08 12:55, 4月前 , 21F
直接做PCA看看變異數多少呀
08/08 12:55, 21F
好的 我試試看 謝謝~ ※ 編輯: 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

08/08 16:58, 4月前 , 22F
你的後續沒有必要接一個ae吧,直接21維下去做也行
08/08 16:58, 22F
目前就是照教授説 跟著paper的內容實作看看~ ※ 編輯: hannxnn (114.27.65.118 臺灣), 08/09/2024 07:18:54

08/09 07:47, 4月前 , 23F
paper只用100筆如果沒有預訓練你也沒辦法復現方法也
08/09 07:47, 23F
了解 原來如此

08/09 07:47, 4月前 , 24F
都對 要考慮是不是那篇paper...ry
08/09 07:47, 24F

08/09 13:55, 4月前 , 25F
很明顯你們教授就不是這個領域的
08/09 13:55, 25F
:((( ※ 編輯: hannxnn (114.27.65.118 臺灣), 08/09/2024 15:09:57 ※ 編輯: hannxnn (114.27.65.118 臺灣), 08/09/2024 15:19:37

08/12 09:48, 4月前 , 26F
Paper 是哪篇 可否分享一下?
08/12 09:48, 26F
是 " Deep learning for high-dimensional reliability analysis"

08/12 11:51, 4月前 , 27F
資料的上下限我舉個例子,如果一張 RGB 圖片他的通道值
08/12 11:51, 27F

08/12 11:51, 4月前 , 28F
最低就是 0 最高就是 255(如果是 uint8)
08/12 11:51, 28F
了解

08/12 11:53, 4月前 , 29F
你對手上資料上下限有概念嗎?這與 activate func 有關
08/12 11:53, 29F
我的資料是一組常態分佈 mean是3.41 standard deviation是0.2 20維 然後有100個初始樣本

08/12 11:58, 4月前 , 30F
然後我在隔壁板看到你提到重建誤差,推測你下游任務是
08/12 11:58, 30F

08/12 11:58, 4月前 , 31F
GAI 之類的,如果是這種就自己生一個模擬21維去打,
08/12 11:58, 31F

08/12 11:58, 4月前 , 32F
看重建結果就能知道模型哪裡沒處理好。
08/12 11:58, 32F
感謝 好的 我試試看 ※ 編輯: 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

08/14 02:00, 4月前 , 33F
paper有提到用mcs抽樣到10萬筆 有跟著做嗎 內文沒提
08/14 02:00, 33F
有的 但10萬筆的MCS也是在訓練完自編碼器才會用到

08/14 02:00, 4月前 , 34F
到 另外他神經元是用20,20,20,2 你要增加神經元的數
08/14 02:00, 34F

08/14 02:00, 4月前 , 35F
量訓練資料就要跟著增加不是越多越好
08/14 02:00, 35F
然後我目前是在做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

08/14 23:43, 4月前 , 36F
對 先照他的方法設定有需要再調整
08/14 23:43, 36F
好的謝謝 我目前有跟著這樣做了 ※ 編輯: hannxnn (36.236.187.141 臺灣), 08/16/2024 01:01:02
文章代碼(AID): #1chun6Sq (Python)
文章代碼(AID): #1chun6Sq (Python)