【发布时间】:2014-09-04 03:42:17
【问题描述】:
我在 MATLAB 中创建了一个自动编码器神经网络。我在第一层有相当大的输入,我必须通过网络的输出层进行重建。我不能按原样使用大输入,所以我使用 MATLAB 的 sigmf 函数将其转换为 [0, 1] 之间。对于所有大值,它为我提供了 1.000000 的值。我尝试使用设置格式,但没有帮助。
在我的自动编码器中使用大值是否有解决方法?
【问题讨论】:
-
您是否考虑过在层的输出使用其他非线性,例如将
sigmf更改为其他内容,例如log可能吗? -
由于我在网络中使用sigmoid函数,所以输出值不能超过1。使用log会给我比这更大的值。
-
我了解到您的问题是输入太大,并且您在使用自动编码器之前使用 sigmf 对输入进行预处理,对吧?
-
是的。输入不是太大,但足以让 sigmoid 函数为多个值生成相同的映射。
-
@Sasha 在网络应用 sigmoid 函数之前,您的输入不会乘以权重吗?因此,权重可以将值降低到 1 以下。听起来您正在寻找标准化数据,以便所有输入具有相似的幅度范围,您可以通过减去每个变量的平均值然后除以标准偏差来做到这一点。这个过程通常被称为标准化输入。
标签: matlab autoencoder