飞桨PaddlePaddle-百度架构师手把手带你零基础实践深度学习-第二次实践作业(8月22日实践作业)

实践作业

本次实践作业目标是使用ResNet进行眼部筛查,通过多次调参数,找到一个最佳的衰减步长,使得loss比原代码中下降的更快。具体代码已经给出,此次实践作业的重点在于修改参数以及绘制loss衰减图。

修改方法

1.使用之前章节学习的多项式学习率动态调节进行改进。
2.定义两个数组用于迭代接收迭代次数和loss,为绘图做准备。
3.修改epoch_num 为 10,获得更明显的loss下降效果

原始代码及结果

首先用原始学习率运行两个epoch,看看loss下降情况。只显示修改部分,代码如下:

# 定义训练过程
def train(model):
    with fluid.dygraph.guard():
        print('start training ... ')
        model.train()

        iter_count = 0
        iters = []
        losses_train = []

        epoch_num = 10
        # 定义优化器
        opt = fluid.optimizer.Momentum(learning_rate=0.001, momentum=0.9, parameter_list=model.parameters())
        # 定义数据读取器,训练数据读取器和验证数据读取器
        train_loader = data_loader(DATADIR, batch_size=10, mode='train')
        valid_loader = valid_data_loader(DATADIR2, CSVFILE)
        for epoch in range(epoch_num):
            for batch_id, data in enumerate(train_loader()):
                x_data, y_data = data
                img = fluid.dygraph.to_variable(x_data)
                label = fluid.dygraph.to_variable(y_data)
                # 运行模型前向计算,得到预测值
                logits = model(img)
                # 进行loss计算
                loss = fluid.layers.sigmoid_cross_entropy_with_logits(logits, label)
                avg_loss = fluid.layers.mean(loss)

                if batch_id % 10 == 0:
                    print("epoch: {}, batch_id: {}, loss is: {}".format(epoch, batch_id, avg_loss.numpy()))

                    iters.append(iter_count)
                    losses_train.append(avg_loss.numpy())
                    iter_count += 10

                # 反向传播,更新权重,清除梯度
                avg_loss.backward()
                opt.minimize(avg_loss)
                model.clear_gradients()

训练结果如下:

epoch: 0, batch_id: 0, loss is: [0.6597792]
epoch: 0, batch_id: 10, loss is: [0.78281564]
epoch: 0, batch_id: 20, loss is: 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值