微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无效的训练数据 X 和 Y 必须具有相同数量的观测值

如何解决无效的训练数据 X 和 Y 必须具有相同数量的观测值

我有很长的心电图信号,分为 300 个点段/心跳。我想使用 CNN 进行特征提取,并使用双向 LSTM 层进行分类我有以下网络:

inputSize=[1 300 1]; %the heartbeat size
Layers=[
sequenceInputLayer(inputSize,'normalization','zscore','Name','input'); 
sequenceFoldingLayer('Name','fold')

convolution2dLayer([1 7],16,'stride',[1 1],'padding','same','conv1')
batchnormalizationLayer('Name','bn1')
maxPooling2dLayer([1 2],[1 2],'mpool1')

convolution2dLayer([1 7],32,'conv2')
batchnormalizationLayer('Name','bn2')
reluLayer('Name','relu1')
maxPooling2dLayer([1 2],'mpool2')

convolution2dLayer([1 5],64,'conv3') 
batchnormalizationLayer('Name','bn3')
reluLayer('Name','relu2')

convolution2dLayer([1 5],128,'conv4')
batchnormalizationLayer('Name','bn4')
reluLayer('Name','relu3')

convolution2dLayer([1 3],256,'conv5')  
batchnormalizationLayer('Name','bn5')
reluLayer('Name','relu4')
maxPooling2dLayer([1 2],'mpool3')

convolution2dLayer([1 3],512,'conv6')
batchnormalizationLayer('Name','bn6')
reluLayer('Name','relu5')
maxPooling2dLayer([1 2],'mpool4')

sequenceUnfoldingLayer('Name','unfold')
flattenLayer('Name','flatten')

bilstmLayer(200,'lstm')

reluLayer('Name','relu6')
fullyConnectedLayer(256,'fc1')
reluLayer('Name','relu7')
fullyConnectedLayer(128,'fc2')
reluLayer('Name','relu8')
fullyConnectedLayer(5,'fc3')
softmaxLayer('Name','softmax')
classificationLayer('Name','classification')
];

我使用以下方法连接层:

lgraph = layergraph(Layers);
lgraph = connectLayers(lgraph,'fold/miniBatchSize','unfold/miniBatchSize');

当我训练网络时出现以下错误

Error using trainNetwork (line 170)
Invalid training data. X and Y must have the same number of observations.
Error in CNN_LSTM (line 152)
convnet = trainNetwork(Xtrain,Ytrain,lgraph,options);

谁能告诉我如何解决这个错误? Xtrain 的大小为 1 300 1 91147(它包含 91147 个段,每个段 300 个数据点) Y 火车的尺寸为 91147 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。