Sas*_*sha 5 matlab autoencoder
我在MATLAB中创建了一个自动编码器神经网络.我在第一层有很大的输入,我必须通过网络的输出层重建.我不能使用大输入,所以我使用sigmfMATLAB的功能将其转换为[0,1]之间.对于所有大值,它给出的值为1.000000.我尝试过使用设置格式,但没有用.
有自动编码器使用大值的解决方法吗?
将输入转换为 [0,1] 范围的过程称为标准化,但是,正如您所注意到的,sigmf函数不足以完成此任务。这个链接也许对你有用。
假设您的输入由 N 行 M 列的矩阵给出,其中每行代表一个输入模式,每列代表一个特征。如果您的第一列是:
vec =
-0.1941
-2.1384
-0.8396
1.3546
-1.0722
Run Code Online (Sandbox Code Playgroud)
然后你可以使用以下方法将其转换为范围 [0,1]:
%# get max and min
maxVec = max(vec);
minVec = min(vec);
%# normalize to -1...1
vecNormalized = ((vec-minVec)./(maxVec-minVec))
vecNormalized =
0.5566
0
0.3718
1.0000
0.3052
Run Code Online (Sandbox Code Playgroud)
正如@Dan 在评论中指出的那样,另一种选择是标准化数据。此过程的目标是将输入缩放为均值 0 和方差 1。在这种情况下,您需要减去列的平均值并除以标准差:
meanVec = mean(vec);
stdVec = std(vec);
vecStandarized = (vec-meanVec)./ stdVec
vecStandarized =
0.2981
-1.2121
-0.2032
1.5011
-0.3839
Run Code Online (Sandbox Code Playgroud)