深度学习小结

我接触深度学习已经有一段时间了,特别是现在读研究生还是离不开机器学习这方面的内容,因此我需要不断地提高这方面的水平,每一次编码都要比以往更加规范、高效并提高封装效果以便于快速的进行二次开发,而不能仅仅水平一直停留在复制粘贴、调包的程度,很多小工具需要弄清出工作原理,不一定都要复现,但出了问题一定要第一时间能够修改和调试。

目前比较常用的深度学习框架有很多,有大家都很熟悉的Tensorflow,有Pytorch,还有Keras、Caffe、PaddlePaddle等等。我主要用过前三种,对Pytorch最为熟悉,还在Coursera上学习过一整套Pytorch的教程。在进行机器学习或深度学习开发的过程中,需要学习优秀的开源代码,并对照着不断完善自己的代码,这样才能提高,而不仅仅是为了完成某一个功能而进行的开发,要考虑其简洁性效率复用性等因素,还要适当的提高内存使用的效率,同时为了便于推广,还要适当的添加一些必要的注释。

今天是2020年12月8日,随着项目Experiments_HTN实验内容的增加,代码重复性很高,而且因为参数的缘故显得十分的臃肿,并且数据集非常大显然是不能直接提交到github上进行保存的,管理和复用时极其不方便,因此,我查阅了一些github上比较优秀的开源项目,想从中学习一些代码管理经验,特别是参数和数据的处理方式。以下开源的项目在一定程度上给了我一些有用的参考

  • text-classification-cnn-rnn3.3K Star;1.3K Fork,该项目使用卷积神经网络以及循环神经网络进行中文文本分类。尽管它采用的是tensorflow框架,但其模型及其参数定义的很简洁,即定义一个Config类来对参数进行管理,是目前我非常欣赏的一种方式

  • yolov56.8K Star;2.2 K Fork,该项目用于目标检测的研究,采用Pytorch框架,提供了一些较好的模型断点可以用于迁移学习,该项目的参数主要是通过argparse来输入及调用,还有一些参数直接放在函数传参入口

  • chineseocr_lite6K Star;1.2K Fork中文OCR,支持竖排文字识别,NCNN推理,没有采用上述框架,其参数也是定义在Config文件中

其他还有很多项目,这里就不一一列举了。总的来说,我发现国外的Coder更倾向于将模型的众多参数通过argparse调用,可能是他们大多数采用linux的环境进行开发,这时显然这种方式更加具有优势。而对国内的Coder更倾向将模型的参数保存在一个文件(.yml/.py/.json)中,或者保存在一个单独的类中。

总之,我还是更能接受将参数保存在类中。由于HTN在实验过程中,经常会采用不同框架的代码,不同更新方式的模型,不同种类的数据(mnist/fashion-mnist/X-ray_Image/cifar10),因此将数据统一下载或保存到根目录./dataset/下,使得不同框架的模型可以共享,而不同的框架和模型则用不同的文件夹进行区分。至于较大的自定义数据集暂时先存在服务器上,供大家下载。

参考

1. Pytorch开源项目汇总

2.吐血整理:PyTorch项目代码与资源列表 | 资源下载

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2024 YuleZhang's Blog
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信