首页 > 解决方案 > 无效的训练数据。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','Name','conv1')
batchNormalizationLayer('Name','bn1')
maxPooling2dLayer([1 2],'stride',[1 2],'Name','mpool1')

convolution2dLayer([1 7], 32,'stride',[1 1], 'padding','same','Name','conv2')
batchNormalizationLayer('Name','bn2')
reluLayer('Name','relu1')
maxPooling2dLayer([1 2],'stride',[1 2],'Name','mpool2')

convolution2dLayer([1 5], 64,'stride',[1 1], 'padding','same','Name','conv3') 
batchNormalizationLayer('Name','bn3')
reluLayer('Name','relu2')

convolution2dLayer([1 5], 128,'stride',[1 1], 'padding','same','Name','conv4')
batchNormalizationLayer('Name','bn4')
reluLayer('Name','relu3')

convolution2dLayer([1 3], 256,'stride',[1 1], 'padding','same','Name','conv5')  
batchNormalizationLayer('Name','bn5')
reluLayer('Name','relu4')
maxPooling2dLayer([1 2],'stride',[1 2],'Name','mpool3')

convolution2dLayer([1 3], 512,'stride',[1 1], 'padding','same','Name','conv6')
batchNormalizationLayer('Name','bn6')
reluLayer('Name','relu5')
maxPooling2dLayer([1 2],'stride',[1 2],'Name','mpool4')

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

bilstmLayer(200,'Name','lstm')

reluLayer('Name','relu6')
fullyConnectedLayer(256,'Name','fc1')
reluLayer('Name','relu7')
fullyConnectedLayer(128,'Name','fc2')
reluLayer('Name','relu8')
fullyConnectedLayer(5,'Name','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 train 的大小为 91147 1

标签: matlabdeep-learningconv-neural-networkclassificationlstm

解决方案


推荐阅读