我如何创建一个1D CNN

290次浏览(过去30天)
约书亚·德容
约书亚·德容 2017年8月28日
编辑: 大卫·威林汉 2022年3月21日
大家好,我是cnn的新手,目前正在探索cnn在1维数据集上的应用,非常感谢您在与trainNetwork函数相关的错误方面提供帮助。尽管已经反复检查了标签数组,但一切似乎都是有序的。我现在要用试错法了。有人能帮忙吗?
训练数据集包含662个样本,每个样本由1 × 800向量组成。我已经将其重塑为帮助文档中指定的4D数组(也请参阅:https://au.mathworks.com/matlabcentral/answers/331164-convolutional-1d-net)
训练标签数组以3 × 662双精度数组的形式存在。
见下文:
高度= 1;
宽度= 800;
通道= 1;
sampleSize = 662;
CNN_TrainingData =重塑(Training_ReductWindows_G,[高度,宽度,通道,sampleSize]);
CNN_TrainingLabels = Training_Labels_Bin_G;;
构建CNN层
InputLayer = imageInputLayer([height,width,channels]);% ' DataAugmentation ', '没有');%“正常化”,“没有一个”);
c1 =卷积2dlayer ([1 5], 16),“步”10 [1]);%过滤窗口大小=[1 5],过滤器个数= 16,stride =[1 10]。
我们使用最大池化层作为下采样层。另一种选择是
%使用平均池化层,例如AveragePooling2dLayer或reluLayer
r1 = reluLayer();
p1 = maxPooling2dLayer([1 20],“步”10 [1]);%PoolSize = [1 20], Stride = [1 10]
f1 = fullyConnectedLayer(3);减少到三个输出类
s1 = softmaxLayer();
outputLayer = classificationLayer ();
convnet = [InputLayer;c1;r1;p1;f1;s1;outputLayer]
opts = trainingOptions(“个”);%优化使用随机梯度下降与动量
convnet = trainNetwork(CNN_TrainingData, CNN_TrainingLabels, convnet, opts);
然而,这始终返回以下错误:
错误使用trainNetwork>iAssertCategoricalResponseVector(第598行)
Y肯定是分类反应的向量。
错误在trainNetwork> iassertvalidresponsefornetwork(第589行)
iAssertCategoricalResponseVector (x);
错误在trainNetwork>iParseInput(第335行)
iassertvalidresponsefornetwork (Y, layers);
错误in trainNetwork(第68行)
[layers, opts, X, Y] = iParseInput(varargin{:});
错误在CNN(第38行)
convnet = trainNetwork(CNN_TrainingData, CNN_TrainingLabels, convnet, opts);
有人能指出我的错误吗?
非常感谢
3评论
Aybike pirol elmas
Aybike pirol elmas 2020年5月31日
你找到解决问题的办法了吗?
目标=分类(target_trans (1:50 0) ');返回以下错误:
使用分类错误(第431行)
无法创建默认类别名称。使用CATEGORYNAMES输入参数指定类别名称。
但如果它的大小是365或更小,没有问题。但是我的目标数据大于365。

登录评论。

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2017年8月28日
试一试
CNN_TrainingLabels = categorical(Training_Labels_Bin_G);
5个评论
naglaa fathy
naglaa fathy 2021年9月17日
编辑:naglaa fathy 2021年9月17日
trainingFeatures = [];
trainingLabel = categorical.empty ();
trainingFeatures(featutale,:) = Features;
trainingLabel(featutale,:) = TrainingimgSets(i).Description;

登录评论。

更多答案(1)

大卫·威林汉
大卫·威林汉 2021年9月23日
编辑:大卫·威林汉 2022年3月21日
嗨,从R2021b开始,您可以使用1-D卷积和池化层为序列和时间序列数据创建和训练深度学习网络。
使用以下层创建网络:
层的卷积或池的维度取决于层的输入:
  • 对于时间序列和向量序列输入(分别对应于通道、观测和时间步长的三个维度的数据),该层在时间维度上进行卷积或池化。
  • 对于1-D图像输入(分别对应于空间像素、通道和观测值的三维数据),该层在空间维度上进行卷积或池化。
  • 对于一维图像序列输入(分别对应空间像素、通道、观测值和时间步长四个维度的数据),该层在空间维度上进行卷积或池化。
有关显示如何使用1-D卷积训练序列到标签分类网络的示例,请参见 使用1-D卷积的序列分类
有关显示如何使用1-D卷积训练序列到序列分类网络的示例,请参见 使用1-D卷积的序列到序列分类
问候,
2的评论
大卫·威林汉
大卫·威林汉 2021年12月28日
久保,
应用是什么?1D适用于时间序列,2D适用于图像,3D适用于医疗/激光雷达。

登录评论。