在MindSpore中loss的使用

本文介绍了在MindSpore中如何自定义loss function并结合TrainOneStepCell进行模型训练,同时展示了利用回调函数EarlyStop监控loss值以实现训练早停功能,当loss下降到特定阈值时停止训练。
摘要由CSDN通过智能技术生成

loss是模型训练中的一个重要指标,判断模型的准确率,下面介绍三种用法

  1. 自定义loss function后还需自定义TrainOneStepCell,实现梯度计算时sens的个数和network的输出个数相同。

    net = Net()

    loss_fn = MyLoss()

    loss_with_net = MyWithLossCell(net, loss_fn)

    train_net = MyTrainOneStepCell(loss_with_net, optim)

    model = Model(net=train_net, loss_fn=None, optimizer=None)

    使用如上示例,可完成自定义一个可以返回多个值得loss函数

  2. 使用MindSpore监控loss值

    主要步骤:首先自定义一个Callback。参考ModelCheckpoint的写法,此外再增加判断loss的逻辑。

    class EarlyStop(Callback):

    def __init__(self):

        self.loss = None

    def step_end(self, run_context):

         loss =  ****(get current loss)

         if (self.loss == None or loss < self.loss):

             self.loss = loss

             # do save ckpt

  3. 使用loss实现早停功能。

    功能描述:当loss降到一定数值后,停止训练。

    可以自定义callback方法实现早停功能。

    class Early

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值