手撕代码1:deep image matting (2):ArgumentParse

上一期把准备工作都搞定了,这一期就是直接开始对代码进行手撕并讲解结构。首先先看一下代码的主体架构是啥子造型。

这篇复现代码最舒服的地方就是把什么零件都在外面给你展示好了,至少不用在各种奇奇怪怪的文件夹里面翻箱倒柜。这里面进行解析的时候先把预处理的放到一边,从训练开始进行一点一点的解构,也就是train.py

train.py 模型训练过程

按照我的个人经验来说,从main函数进行拆解的话效率会特别高。那就直接进行拆解。

 简单粗暴到有点过分的程度,直接调用函数进行看似复杂的训练过程。首先声明了全局变量args,用parse_args赋值,然后就用train_net进行训练调用。越是看起来简单的语句实际上背后搞的事情远比想像中的多。。。这时候就需要ctrl+鼠标点击直接寻找对应的位置看相关函数是怎么运行的。首先先看看parse_args

 看起来这些参数是真的有点不知所云,只能一点一点解析。(其实这里跟最后训练的模型没啥太大关系,不搞也没啥,为了严谨性外加充字数还是研究研究吧以后没准还得写)首先parser这个变量是什么东西我们需要先看一看。parser是一个ArgumentParser变量,按照官方文档的意思就是:

 这。。是个啥。。。。

按照大神命令行传递参数 argparse.ArgumentParser解析_Puppy_L的博客-CSDN博客

的解释来说,就是在程序运行的时候能在命令行方便传参数,这样就可以避免直接修改代码(懒人福音)。那么现在就挨个看这些个参数究竟是怎么回事

以这句为例,它使用了一个新版的功能:add_argument

 这句的作用就是:定义一个叫做end-epoch的参数,默认值为100且类型为int,这个参数是training-epoch-size,epoch都知道是完整训练的次数,默认是100,由于这里面对于end-epoch前面是两个横杠 -  -,因此使用的时候就需要在命令行重写end-epoch参数的时候要先加两个横杠再在后面进行赋值(大神的csdn博客里面解释的特别清楚了)。

由此这个函数的作用就变得清晰明白:在运行的时候能够通过命令行进行参数的赋值以及修改。这个功能对于使用者来说真的很舒服。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值