【发布时间】:2018-02-07 08:04:15
【问题描述】:
我正在尝试使用 Matlab 为一维数据设置一个简单的去噪自动编码器。由于目前没有专门的一维数据输入层,因此必须使用 imageInputLayer() 函数:
function net = DenoisingAutoencoder(data)
[N, n] = size(data);
%setting up input
X = zeros([n 1 1 N]);
for i = 1:n
for j = 1:N
X(i, 1, 1, j) = data(j,i);
end
end
% noisy X : 1/10th of elements are set to 0
Xnoisy = X;
mask1 = (mod(randi(10, size(X)), 7) ~= 0);
Xnoisy = Xnoisy .* mask1;
layers = [imageInputLayer([n 1 1]) fullyConnectedLayer(n) regressionLayer()];
opts = trainingOptions('sgdm');
net = trainNetwork(X, Xnoisy, layers, opts);
但是,代码失败并显示以下错误消息:
最后一层的输出大小[1 1 n]不匹配 响应大小 [n 1 1]。
关于应该如何重新配置输入/层有什么想法吗?如果fullyConnectedLayer 被忽略,那么代码运行良好,但显然我没有隐藏层。
【问题讨论】:
-
我无法帮助您,因为我没有工具箱并且响应很少,您是否检查过此解决方法? nl.mathworks.com/matlabcentral/answers/…
标签: matlab neural-network deep-learning autoencoder