CNN数据准备

参考:http://blog.youkuaiyun.com/chengzhongxuyou/article/details/50717543

数据准备

这部分是最耗时耗力的了,自己自行准备,注意准备的图片的大小最好是一样的,免得麻烦。我使用64*64的尺寸大小。给出train文件夹图像库的列表示意。假设我们已经准备好了数据,每一个分类中有100张train图片,有20张test图片。将这里面的400张train图片放到train文件夹,80张test图片放到test文件夹。
然后我们需要制作标签(label),将图片路径与图片分类作为键值对,因为我们需要对四种不同的图像进行分类,所以我们可以将第一种图像的标签设为0,第二种设为1,第三种设为2,第四种设为3.
这些“键值对”被保存到.txt中。对应的train中的label为:
如果图片数据库非常大,直接写一个小程序,自动生成标签label的.txt。注意label包括两个部分,一个是train,一个是test。这里不再赘述test的label的生成。
那么我们为什么要花时间去做label呢,当然是通过程序读取label的.txt,每一行为一个键值对,一个键值对对应一幅图像的路径与标签。注意,是图像的路径而不是图像的名称。因为我的数据库与程序在同级目录,所以这里的图片名称即为图片相对路径。

转载于:https://www.cnblogs.com/believe-in-me/p/6646927.html

### 使用卷积神经网络 (CNN) 实现数据预测 卷积神经网络(Convolutional Neural Network, CNN)最初设计用于图像分类任务,但由于其强大的特征提取能力,也可以应用于其他类型的回归或预测问题。以下是关于如何利用 CNN 进行数据预测的具体方法。 #### 数据准备 在构建模型之前,需要准备好训练集和验证集。对于非图像数据,可以将其重新排列成适合 CNN 输入的形式,例如二维矩阵或多维张量。如果原始数据是一维时间序列,则可以通过滑动窗口技术将一维信号转换为多通道输入[^1]。 ```matlab % 假设 XTrain 和 YTrain 是已有的训练数据 XTrain = reshape(XTrain, [height, width, channels, numObservations]); YTrain = YTrain(:); ``` #### 构建 CNN 结构 MATLAB 提供了 `layerGraph` 或者更简单的高层 API 来创建 CNN 模型。下面是一个典型的 CNN 层次结构: - **卷积层**: 负责提取局部空间模式。 - **ReLU 激活函数**: 非线性变换增加表达能力。 - **池化层**: 下采样减少计算复杂度并增强鲁棒性。 - **全连接层**: 将前面学到的空间特征映射到目标变量上。 - **输出层**: 对于回归问题通常采用单一节点无激活或者线性激活。 ```matlab layers = [ imageInputLayer([height width channels]) convolution2dLayer(3, 64, 'Padding', 'same') reluLayer maxPooling2dLayer(2,'Stride',2) fullyConnectedLayer(1) % 输出维度取决于具体应用需求 regressionLayer]; ``` #### 训练选项设置 通过指定优化算法参数以及早停策略等超参调优手段提升性能表现。 ```matlab options = trainingOptions('adam',... 'MaxEpochs',100,... 'MiniBatchSize',128,... 'Plots','training-progress',... 'Verbose',false,... 'Shuffle','every-epoch',... 'ValidationData',{XValidation,YValidation},... 'ValidationFrequency',30,... 'ValidationPatience',10); ``` #### 开始训练过程 一旦完成了上述准备工作之后就可以正式进入训练环节,在此期间会不断调整权重直至满足收敛条件为止。 ```matlab net = trainNetwork(XTrain,YTrain,layers,options); ``` #### 测试阶段评估效果 最后一步是对新样本执行前向传播操作得到最终估计值并与真实标签对比分析误差大小从而判断整个流程的有效程度。 ```matlab YPred = predict(net,XTest); RMSE = sqrt(mean((YPred - YTest).^2)); disp(['Root Mean Square Error: ',num2str(RMSE)]); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值