0
我正在嘗試使用Matlab爲1D數據設置一個簡單的去噪自動編碼器。由於目前存在用於1D數據沒有專門輸入層的imageInputLayer()
功能已被使用:在Matlab中對1D數據進行簡單的去噪自動編碼器
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 Ñ]與 響應大小不匹配[n11]。
有關應該如何重新配置輸入/圖層的任何想法?如果fullyConnectedLayer
被遺漏,那麼代碼運行良好,但顯然然後我沒有隱藏層。
我幫不了你,因爲我沒有工具箱並給出了小的反應,你檢查這個解決方法嗎? https://nl.mathworks.com/matlabcentral/answers/331865-how-to-match-output-size-in-cnn – 10a