【杂谈】面向新手的深度学习开源框架指导手册与GitHub项目
开源框架背景
现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caffe,tensorflow,pytorch/caffe2,keras,mxnet,paddldpaddle,theano,cntk,deeplearning4j,matconvnet等。
如何选择最适合你的开源框架是一个问题,有三AI在前段时间里,给大家整理了10多个深度学习开源框架快速入门的教程和代码,供初学者进行挑选,一个合格的深度学习算法工程师必须熟悉其中主流的,下面是各大开源框架的一个总览。
在这里我们还有一些框架没有放上来,是因为它们已经升级为大家更喜欢或者使用起来更加简单的版本,比如从torch->pytorch,从theano到lasagne。另外这些框架都支持CUDA,因此编程语言这里也没有写上cuda。
在选择开源框架时,要考虑很多原因,比如开源生态的完善性,比如自己项目的需求,比如自己熟悉的语言。当然,现在已经有很多开源框架之间进行互转的开源工具如MMDNN等,也降低了大家迁移框架的学习成本。除此之外还有tiny-dnn,ConvNetJS,MarVin,Neon等等小众,以及CoreML等移动端框架,就不再一一介绍。
总的来说对于选择什么样的框架,有三可以给出一些建议。
(1) 不管怎么说,tensorflow/pytorch你都必须会,这是目前开发者最喜欢,开源项目最丰富的两个框架。
(2) 如果你要进行移动端和嵌入式的开发,那么Caffe是不能不会的。
(3) 如果你非常熟悉Matlab,matconvnet你不应该错过。
(4) 如果你追求高效轻量,那么darknet和mxnet你不能不熟悉。
(5) 如果你很懒,想写最少的代码完成任务,那么用keras吧。
(6) 如果你是java程序员,那么掌握deeplearning4j没错的。
本手册内容
一个框架,官方都会开放有若干的案例,最常见的案例就是以MNIST数据接口+预训练模型的形式,供大家快速获得结果,但是这明显还不够,学习不应该停留在跑通官方的demo上,而是要解决实际的问题。要掌握好一个开源框架,通常需要做到以下几点:
(1) 熟练掌握不同任务数据的准备和使用。
(2) 熟练掌握模型的定义。
(3) 熟练掌握训练过程和结果的可视化。
(4) 熟练掌握训练方法和测试方法。
我们要学会从自定义数据读取接口,自定义网络的搭建,模型的训练,模型的可视化,模型的测试与部署等全方位进行掌握。
在下面的所有框架的学习过程中,我们都要完成下面这个流程,只有这样,才能叫做真正的完成了一个训练任务。
在这样的背景下,我们开设了一个《2小时快速入门开源框架系列》,有超过12个框架的快速入门使用教程,配套文章如下:
本手册各章节及内容如下:
【pytorch速成】Pytorch图像分类从模型自定义到测试
【tensorflow速成】Tensorflow图像分类从模型自定义到测试
【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试
【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试
【MatConvnet速成】MatConvnet图像分类从模型自定义到测试
【DL4J速成】Deeplearning4j图像分类从模型自定义到测试
【chainer速成】chainer图像分类从模型自定义到测试
【Lasagne速成】Lasagne/Theano图像分类从模型自定义到测试
本手册我们给大家配套了GitHub项目,地址为:
https://github.com/longpeng2008/yousan.ai
除了12个开源的使用,本手册中还包括一个统一的各类深度学习模型结构和权重可视化工具,以及各类深度学习模型绘制工具,如下:
目前发布的是V1.0版本,共计150页,发送关键词“深度学习开源框架”到公众号即可获取。
后续安排
时间过去有段时间了,开源框架也增加了不少,因此我们希望招募更多的小伙伴来进行更新,后续要增加的内容包括:
(1) 增加更多训练框架的使用教程,包括MegEngine,MindSpore等。
(2) 增加推理框架的使用教程,本手册中已经对现有的推理框架进行了更新。
(3) 增加更多高效率工具的使用教程,包括但不限于可视化。