在深度学习模型训练中,随着模型参数的迭代,损失函数也会不断变化。此时可画出图像以了解变化趋势。以Kaggle比赛狗的品种识别为例,针对动手学深度学习9.13.5的代码段,进行如下修改,略去重复代码:

def train(net, train_iter, valid_iter, num_epochs, lr, wd, ctx, lr_period,
          lr_decay):
    '''略去'''
    # 记录训练误差和验证误差
    ts = []
    vs = []
    for epoch in range(num_epochs):
        '''略去'''
        for batch_i, (X, y) in enumerate(train_iter): # 修改以获取当前样本数
            '''略去'''
            if (batch_i + 1) * batch_size % 20 == 0:
                ts.append(train_l_sum / n)  # 每20个样本记录下当前误差
                if valid_iter is not None:
                    vs.append(evaluate_loss(valid_iter, net, ctx))
        '''略去'''
    # 画出训练误差和验证误差曲线
    d2l.set_figsize()
    d2l.plt.plot(np.linspace(0, num_epochs, len(ls)), ls, label='train loss')
    if vs:
        d2l.plt.plot(np.linspace(0, num_epochs, len(vs)), vs, label='valid loss')
    d2l.plt.xlabel('epoch')
    d2l.plt.ylabel('loss')
    d2l.plt.legend()
    d2l.plt.show()

设置num_epochs为2,即可得出针对验证集的曲线图: