2020-08-28

飞桨深度学习第二周作业讲解


跟着飞桨学习的第二周,本周主要建好了各种卷积网络,并通过paddle来实现。


一、作业要求

本代码旨在于使用ResNet进行眼睑筛查,代码已经完成,可以直接运行。有以下要求:
1.通过查阅API,使用衰减学习率,通过多次调参数,找到一个最佳的衰减步长,使得loss比原代码中下降的更快
2.请自行绘制修改学习率前后的loss衰减图
注:
完整代码我就不复制了,这篇文章主要讲下如何使用衰减学习率以及绘制loss衰减图。

二、实现过程

1.衰减学习率的使用

代码如下(示例):

total_steps = (int(400/batch_size)+1)*epoch_num
#这一句确定步长。其中400是数据集图片数量。由于作业要求一个最佳的衰减步长,后续可通过不断减小这个步长来试探得到最佳结果。
lr = fluid.dygraph.PolynomialDecay(0.001,total_steps,0.0005)
#我设置的学习率衰减范围为0.0005-0.001,读者也可以试下其他范围。

2.loss图的绘制

代码如下(示例):

def train(model):
    with fluid.dygraph.guard():
      iters=[]
      losses1=[]
      #这两个用于保存loss图的横纵变量
      ...#这里省略部分可以去官网对照着看,本文不引入过多其他代码
      for epoch in range(epoch_num):
            for batch_id, data in enumerate(train_loader()):
            ...
            if batch_id % 10 == 0:
                    print("epoch: {}, batch_id: {}, loss is: {}".format(epoch, batch_id, avg_loss.numpy()))
                    iters.append(iter)
                    losses1.append(avg_loss.numpy())#记录损失
                    iter = iter + 10  #记录次数
                    ...
    plt.figure()  
    plt.title("lr 0.0005-0.001  total_steps=82", fontsize=24)
    plt.xlabel("iter", fontsize=14)
    plt.ylabel("loss", fontsize=14)
    plt.plot(iters, losses1,color='red',label='train loss') 
    plt.grid()
    plt.show()
#训练完成后将loss图画出来      

结果

以上两组代码便是本次作业核心内容,将其嵌入已给代码中,再更改步长,找到最合适步长,便可完成要求。或者读者可以试一下其他范围的学习率,看能否有更好地的效果。接下来展示一组实验结果给大家参考。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值