[问题] 如何在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