整理Pytorch代码自己的写作习惯

31 篇文章 1 订阅
20 篇文章 6 订阅

自己不是纯代码为主,而主要研究算法,因此自己以前全部代码都是停留在能用的阶段,但自从git clone SRPytorch 这一工程后,觉得需要提升自己代码可读性,也便于自己算法的对比。现大体归纳为以下几点:

1、适当的目录

之前很不好的习惯是全部代码放在一处,甚至放在一个文件中。受SRPytorch的启发,按模型构建、模型保存、附加类库等分类,构建适当的目录,如下图

这样工程下只放一个main.py文件即可。

2、充分利用args或者EasyDict

之前习惯在代码上直接做修改做实验,这不利于对比或记录。通过args可以交互式修改参数,便于对比。也可以通过EasyDict,二者本质一样。用args可以参见 https://github.com/thstkdgus35/EDSR-PyTorch/blob/master/src/option.py

用EasyDict可以参考如下

一般会选择将其放在上述Lib文件夹下。

3、适当代码复用

一般情况下,模型不一致,但其训练验证过程基本一致。如果针对每个模型都撰写训练测试代码,无疑是冗余的。在SRPytorch里,每个模型文件夹下有单独的model.py和solver.py。模型定义文件model.py是唯一的,但solver.py文件的训练、测试等代码可复用。如我们可以在Lib文件夹下定义common.py,将各个模型solver.py中相同的部分定义基类如下

这样在每个solver.py文件下,我们可以直接继承自NormalTrainer类。

4、关于数据读取

Pytorch数据读取比较方便,之前习惯于针对数据的特定类,见之前博文

后来发现,如果对于不同数据集,需要重复定义,比较繁琐。因此,将其简化为两步,第一步构建数据集相关类,用于读取全部数据

第二步创建共享数据加载模块

当然本代码不适用于数据量庞大超过内存限度的情况。

 

后续继续更新。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值