matlab - 无效的训练数据。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
解决方案
推荐阅读
- android - 如何为两个不同的转换处理一个图像源
- android - 当另一个线程中的语句失败时恢复 android 首选项的值
- ios - 如何减小 ML Kit iOS 的包大小?
- apache-kafka - 卡夫卡在启动时抛出异常
- c++ - 造成致命错误:boost/fusion/iterator/equal_to.hpp 没有这样的文件或目录
- c# - 行分隔符 '\u2028' 使用 json.net 解析不正确
- sql - 如何在 SQL Server 上搜索对象 nvarchar 值的 ID
- javascript - javascript错误的重复循环
- ios - Uitableview单元格内的UItableview,内部uitableview不显示
- qt-creator - QtCreator doc中重叠的字母