matlab自定义脚本输出,自定义深度学习网络训练期间的输出

自定义深度学习网络训练期间的输出

此示例说明如何定义在深度学习神经网络训练期间的每次迭代都运行的输出函数。如果您使用 trainingOptions 的 'OutputFcn' 名称-值对组参数指定输出函数,则 trainNetwork 将分别在训练开始前、每次训练迭代后以及训练结束后各调用这些函数一次。每次调用输出函数时,trainNetwork 都会传递一个包含当前迭代编号、损失和准确度等信息的结构体。您可以使用输出函数显示或绘制进度信息,或者停止训练。要提前停止训练,请让输出函数返回 true。如果任何输出函数返回 true,则训练结束,并且 trainNetwork 返回最新网络。

要在验证集的损失不再降低时停止训练,只需分别使用 trainingOptions 的 'ValidationData' 和 'ValidationPatience' 名称-值对组参数指定验证数据和验证容忍度。验证容忍度是指在网络训练停止之前验证集的损失可以大于或等于先前最小损失的次数。您可以使用输出函数添加其他停止条件。此示例说明如何创建在验证数据的分类准确度不再提高时停止训练的输出函数。输出函数在脚本末尾定义。

加载训练数据,其中包含 5000 个数字图像。留出 1000 个图像用于网络验证。

[XTrain,YTrain] = digitTrain4DArrayData;

idx = randperm(size(XTrain,4),1000);

XValidation = XTrain(:,:,:,idx);

XTrain(:,:,:,idx) = [];

YValidation = YTrain(idx);

YTrain(idx) = [];

构建网络以对数字图像数据进行分类。

layers = [

imageInputLayer([28 28 1])

convolution2dLayer(3,8,'Padding','same')

batchNormalizationLayer

reluLayer

maxPooling2dLayer(2,'Stride',2)

convolution2dLayer(3,16,'Padding','same')

batchNormalizationLayer

reluLayer

maxPooling2dLayer(2,'Stride',2)

convolution2dLayer(3,32,'Padding','same')

batchNormalizationLayer

reluLayer

fullyConnectedLayer(10)

softmaxLayer

classificationLayer];

指定网络训练的选项。要在训练过程中按固定时间间隔验证网络,请指定验证数据。选择 'Validat

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值