首页 > 解决方案 > 自定义深度学习层出错(自定义重塑层不起作用)

问题描述

我正在使用来自 8 个通道和 500 个时间样本的时间序列数据的 CNN。我的深度学习架构由以下几层组成。在第一步中,我在通道上执行一维卷积(输入大小 [500 8 1]),所以我得到 16 个 [500 x 1] 数组,输出大小变为 [500 x 1 x 16]。我编写了一个自定义函数来将其大小重塑为 [500 x 16 ],但是当我训练网络时它给了我一个错误。请只看图片并帮助我。我已尽我所能解释它。谢谢

架构图片: https ://www.mathworks.com/matlabcentral/answers/uploaded_files/238391/Picture1.png

当我使用 analyzeNetwork(layers) 分析网络时。它表明我的架构是正确的这是它的结果 https://www.mathworks.com/matlabcentral/answers/uploaded_files/238392/Capture.jpeg

但是当我开始训练网络时,它给了我以下错误 https://www.mathworks.com/matlabcentral/answers/uploaded_files/238393/Capture.jpeg

这是我编写的重塑层的代码:

classdef reshapeLayer < nnet.layer.Layer
    properties
    end

    methods
        function layer = reshapeLayer(Name) 
            layer.Name = Name; 
        end

        function [Z] = predict(layer, X)
            sz = [size(X,1) size(X,2)*size(X,3) size(X,4)];
            Z  = reshape(X , sz);
        end

        function [dldx]  = backward(layer,~,~,dldz,~)
            sz = [size(dldz,1) , 1 , size(dldz,2) , size(dldz,3)];
            dldx = reshape(dldz , sz);
        end 
    end
end

标签: matlabneural-networkdeep-learningartificial-intelligenceconv-neural-network

解决方案


推荐阅读