我在AutroEcnoder的文档中发现:
重新缩放输入数据的指示符,指定为逗号分隔 由'ScaleData'和true或false组成的对。
Autoencoders尝试在输出中复制输入。为了它 为了可能,输入数据的范围必须与范围相匹配 解码器的传递函数。 trainAutoencoder自动 训练自动编码器时,将训练数据缩放到此范围。 如果在训练自动编码器时缩放数据,则预测, 编码和解码方法也可以缩放数据。
MATLAB如何做到这一点?当我运行这样的模型时:
hiddenSize1 = 1;
autoenc1 = trainAutoencoder(tdata, hiddenSize1, 'UseGPU',true);
factor_1 = encode(autoenc1, tdata);
我发现factor_1
的均值不为0且标准占卜不是1的事实。那么标准化数据的程序是什么?
答案 0 :(得分:0)
[x,t] = wine_dataset;
autoenc = trainAutoencoder(x, 10, 'EncoderTransferFunction', 'logsig', 'ScaleData', true);
encoded_data1 = encode(autoenc, x);
x_scaled = (x-min(x,[],2))./(max(x,[],2)-min(x,[],2));
encoded_data2 = logsig(autoenc.EncoderWeights * x_scaled + autoenc.EncoderBiases);