loss是模型训练中的一个重要指标,判断模型的准确率,下面介绍三种用法
-
自定义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函数
-
使用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
-
使用loss实现早停功能。
功能描述:当loss降到一定数值后,停止训练。
可以自定义callback方法实现早停功能。
class Early