【问题标题】:sequenceInputLayer() Dimensions of arrays being concatenated are not consistentsequenceInputLayer() 被连接的数组的维度不一致
【发布时间】:2019-07-02 11:35:16
【问题描述】:

我尝试创建一个 LSTM 模型。我收到以下错误:

使用 vertcat 时出错 被连接的数组的维度不是 持续的。源错误(第 9 行) 序列输入层(33)

sequenceInputLayer 的输入和它的大小应该是什么?

Data = csvread('newData.csv');
num_timesteps = size(Data,1)
num_features = size(Data,2)
Data = normalize(Data);
numHiddenUnits = 200;
size(Data)
layers = [
    sequenceInputLayer(33)
    lstmLayer(numHiddenUnits,'OutputMode','sequence')
    fullyConnectedLayer(50)
    dropoutLayer(0.5)
    fullyConnectedLayer(num_features),regressionLayer];
maxEpochs = 60;
miniBatchSize = 20;
options = trainingOptions('adam', ...
    'MaxEpochs',maxEpochs, ...
    'MiniBatchSize',miniBatchSize, ...
    'InitialLearnRate',0.001, ...
    'GradientThreshold',1, ...
    'Shuffle','never', ...
    'Plots','training-progress',...
    'Verbose',0);
% net = trainNetwork(Data,Data,layers,options);

【问题讨论】:

    标签: matlab deep-learning lstm seq2seq


    【解决方案1】:

    问题不在于sequenceInputLayer,问题在于您创建layers 数组的方式。

    替换:

    layers = [
        sequenceInputLayer(33)
        lstmLayer(numHiddenUnits,'OutputMode','sequence')
        fullyConnectedLayer(50)
        dropoutLayer(0.5)
        fullyConnectedLayer(num_features),regressionLayer];
    

    与:

    layers = [
        sequenceInputLayer(33)
        lstmLayer(numHiddenUnits,'OutputMode','sequence')
        fullyConnectedLayer(50)
        dropoutLayer(0.5)
        fullyConnectedLayer(num_features),
        regressionLayer];
    

    解释:在数组声明中,当在新行中添加元素(或以; 分隔)时,您正在创建列向量,当以, 分隔时,您正在创建一行向量。不知怎的,你把它们弄混了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2020-08-24
      • 2021-05-02
      • 2021-12-05
      相关资源
      最近更新 更多