Matlab CNN

数据格式

数据可以是ImageDatastore类型,也可以是4-D数组,四个维度分别是长度,宽度,通道数,第几个图片。

参数

输入层 imageInputLayer([imsize imsize 1])
卷积层1 convolution2dLayer(5,150)
激活函数层1 reluLayer()
标准化层 crossChannelNormalizationLayer(5,‘Alpha’,0.00005,‘Beta’,0.75,‘K’,1)
卷积层2 convolution2dLayer(3,300,‘Stride’,1,‘BiasLearnRateFactor’,2)
激活函数层2 reluLayer()
连接层 fullyConnectedLayer(1)
去最大值层 softmaxLayer()
分类层 classificationLayer()

回归网络最后一层必须是regressionLayer(),倒数第二层为全连接层。
对于回归网络,绘制根均方误差 (rmse) 而不是精度。

代码
%数据参数
[height,width,numChannels,~] = size(trainingImages);
imageSize = [height width numChannels];
numClasses = 10;

%结构
%输入层
inputLayer = imageInputLayer(imageSize);
%中间层
filterSize = [3 3];
numFilters = 32;
middleLayers = [ 
    convolution2dLayer(filterSize,numFilters,'Padding',1)
    reluLayer()
    crossChannelNormalizationLayer(5,'Alpha',0.00005,'Beta',0.75,'K',1)
    convolution2dLayer(filterSize,numFilters,'Padding',1)
    reluLayer()
    maxPooling2dLayer(3,'Stride',2)
    reluLayer()
    maxPooling2dLayer(3,'Stride',2)
    ];
%输出层
finalLayers = [
    fullyConnectedLayer(64)
    reluLayer()
    fullyConnectedLayer(numClasses)
    softmaxLayer()
    classificationLayer()
    ];
%各层合并
layers = [
    inputLayer
    middleLayers
    finalLayers
    ];

%参数
options = trainingOptions('sgdm', ...   
    'Momentum',0.8, ...
    'InitialLearnRate',0.001, ...    
    'LearnRateSchedule','piecewise', ...    
    'LearnRateDropFactor',0.2, ...    
    'LearnRateDropPeriod',8, ...    
    'L2Regularization',0.001, ...    
    'MaxEpochs',40, ...   
    'MiniBatchSize',128, ...   
    'Verbose',true, ...
    'Plots','training-progress');

%训练   
net = trainNetwork(trainingImages,trainingLabels,layers,options);

%测试
YTest = classify(net,testImages);

%准确率
accuracy = sum(YTest == testLabels)/numel(testLabels)
  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值