【问题标题】:I get an error when training simple Neural Network in MATLAB在 MATLAB 中训练简单的神经网络时出现错误
【发布时间】:2019-10-18 23:13:14
【问题描述】:

我已经在MATLAB中构建了简单的神经网络,如下代码所示,输入和输出数据的维度为128x1,我将输入数据划分为21x1用于验证和107用于训练:

clear all; clc; clear;  

bits = randi([0 1], 1 , 128);                 %Original generated data 
data_temp = bi2de(reshape(bits,128/2,2));   
data_mod = (1/sqrt(2))*qammod(data_temp , 4);  

inputs = [real(data_mod); imag(data_mod)];      %the input data of input layer (128 x 1); 
outputs = bits.';                               %output data from output layer (128 x 1); 

inputs_len = 128;                    %length of input data 
outputs_len = 128;                   %length of output data 

IN_V1 = inputs(end-20:end);                     %Test validation input vector
OUT_V1 = outputs(end-20:end);                   %Test Validation output Vector 

Train_seq_in = inputs(22 : end);               %Training inpur Data
Train_seq_out = outputs(22:end);               %Training output Data 

%build Neural network
options1 = trainingOptions('adam','MaxEpochs',2000,'InitialLearnRate',0.001,'MiniBatchSize',10,'Shuffle','every','L2Regularization',0,'Plots','training-progress','ValidationData',{IN_V1,OUT_V1})
layers =[sequenceInputLayer(107) fullyConnectedLayer(1024) reluLayer() fullyConnectedLayer(outputs_len) regressionLayer];

%train network 
 Net1 = trainNetwork(Train_seq_in,Train_seq_out,layers,options1);                  %Training the Network real

当我运行上面的代码时,我得到一个错误:

Error using trainNetwork (line 165)
The validation sequences are of feature dimension 21 but the input layer expects sequences of feature
dimension 107.

Error in quetion (line 24)
 Net1 = trainNetwork(Train_seq_in,Train_seq_out,layers,options1);                  %Training the Network
 real

但是我认为这不合逻辑,因为验证数据应该小于测试数据!!

我尝试将验证数据更改为与输入数据相同,如下所示:

%build Neural network
options1 = trainingOptions('adam','MaxEpochs',2000,'InitialLearnRate',0.001,'MiniBatchSize',10,'Shuffle','every','L2Regularization',0,'Plots','training-progress','ValidationData',{IN_V1,OUT_V1})
layers =[sequenceInputLayer(21) fullyConnectedLayer(1024) reluLayer() fullyConnectedLayer(outputs_len) regressionLayer];

%train network 
 Net1 = trainNetwork(IN_V1,IN_V1,layers,options1);                  %Training the Network real

但在这种情况下,我会收到另一个奇怪的错误,如下所示:

Error using trainNetwork (line 165)
To RESHAPE the number of elements must not change.

Error in quetion (line 24)
 Net1 = trainNetwork(IN_V1,IN_V1,layers,options1);                  %Training the Network real

Caused by:
    Error using reshape
    To RESHAPE the number of elements must not change.

请任何人都可以帮助我解决这个问题?

谢谢

【问题讨论】:

    标签: matlab machine-learning neural-network


    【解决方案1】:

    对于第二个错误: 使用 trainNetwork 时出错(第 165 行) 要 RESHAPE,元素的数量不能改变。

    Error in quetion (line 24)
     Net1 = trainNetwork(IN_V1,IN_V1,layers,options1);                  %Training the Network real
    
    Caused by:
        Error using reshape
        To RESHAPE the number of elements must not change. 
    

    当你修改输入层的大小时,你也应该修改输出层的大小,所以你应该替换这一行:

    layers =[sequenceInputLayer(21) fullyConnectedLayer(1024) reluLayer() fullyConnectedLayer(outputs_len) regressionLayer];
    

    通过这一行:

    layers =[sequenceInputLayer(21) fullyConnectedLayer(1024) reluLayer() fullyConnectedLayer(21) regressionLayer];
    

    【讨论】:

      猜你喜欢
      • 2019-06-22
      • 2010-11-20
      • 1970-01-01
      • 2015-08-13
      • 2012-02-10
      • 1970-01-01
      • 2015-05-28
      • 2012-12-04
      • 2017-08-18
      相关资源
      最近更新 更多