[Github项目]基于PyTorch的深度学习网络模型实现

原文连接:mp.weixin.qq.com/s/VWRiFAQGZ…react

今天主要分享两份 Github 项目,都是采用 PyTorch 来实现深度学习网络模型,主要是一些经常使用的模型,包括如 ResNet、DenseNet、ResNext、SENet等,而且也给出相应的实验结果,包含完整的数据处理和载入、模型创建、训练流程搭建,以及测试代码的实现。git

接下来就开始介绍这两个项目。github


1. PyTorch Image Classification

这份代码目前有 200+ 星,主要实现如下的网络,在 MNIST、CIFAR十、FashionMNIST等数据集上进行实验。算法

使用方法以下:微信

而后就是给出做者本身训练的实验结果,而后和原论文的实验结果的对比,包括在训练设置上的区别,而后训练的迭代次数和训练时间也都分别给出。网络

以后做者还研究了残差单元、学习率策略以及数据加强对分类性能的影响,好比dom

  • 相似金字塔网络的残差单元设计(PyramidNet-like residual units)
  • cosine 函数的学习率递减策略(Cosine annealing of learning rate)
  • Cutout
  • 随机消除(Random Erasing)
  • Mixup
  • 降采样后的预激活捷径(Preactivation of shortcuts after downsampling)

实验结果代表:分布式

  • 相似金字塔网络的残差单元设计有帮助,但不适宜搭配 Preactivation of shortcuts after downsampling
  • 基于 cosine 的学习率递减策略提高幅度较小
  • Cutout、随机消除以及 Mixup 效果都很好,其中 Mixup 须要的训练次数更多

除了这个实验,后面做者还继续作了好几个实验,包括对 batch 大小、初始学习率大小、标签平滑等方面作了很多实验,并给出对应的实验结果。函数

最后给出了这些网络模型的论文、不一样训练策略的论文。性能

这个项目除了实现对应的网络模型外,使用不一样技巧或者研究基本的 batch 大小、初始学习率都是能够给予咱们必定启发,有些技巧是能够应用到网络中,提升分类性能的。

连接:

github.com/hysts/pytor…


2. PyTorch Image Models

这份代码目前有 600+ 星,而且最近几天也有更新,实现的网络更多,包括 DPN、Xception、InceptionResNetV2,以及最近比较火的 EfficientNet。

)

这个项目有如下几个特色:

  • 对全部的模型都作了封装,也就是都有默认的配置接口和 API,包括统一的调用分类器接口get_classifierreset_classifier,对特征的前向计算接口forward_features
  • 模型都有一致的预训练模型加载器,便可以决定是否采用预训练模型最后一层或者输入层是否须要从 3 通道变为 1通道;
  • 训练脚本能够在不一样模式下使用,包括分布式、单机多卡、单机单卡或者单机 CPU
  • 动态实现池化层的操做,包括平均池化(average pooling)、最大池化(max pooling)、平均+最大、或者平均和最大池化结果链接而不是叠加;
  • 不一样训练策略的实现,好比 cosine 学习率、随机消除、标签平滑等
  • 实现 Mixup
  • 提供一个预测脚本

做者一样给出训练的实验结果,而后还有使用方法,一样也是在指定位置准备好数据,就可使用了。

另外,做者还给出 ToDo 列表,会继续完善该项目。

连接:

github.com/rwightman/p…


欢迎关注个人微信公众号--算法猿的成长,或者扫描下方的二维码,你们一块儿交流,学习和进步!

相关文章
相关标签/搜索