为什么需要机器学习平台?
我们做计算机视觉或自然语言,懂算法、自己会开发不就行了,为什么还需要学习这些机器学习平台的使用?原因有几个:
- 节省时间
- 精度高
首先说一下节省时间,比如做计算机视觉过程中,我们搭一个YOLO模型,里面涉及矩阵运算、卷积运算、梯度传播、池化、dropout、激活函数、dataloader、优化算法等等,如果把这些模块都自己重新开发一边,必然会耗费很多时间,而这些模块又是相对成熟稳定的,我们大可不必在这上面耗费时间,而应该把时间用在模型的调优、场景的适配等方面,有了机器学习平台,一行命令就能解决我们用C/C++写一上午甚至更长时间的工作。
其次是精度高,有很多算法虽然流程相同,但是不同的人实现的效果却不同,例如Adam、RMSProp等,这些算法计算速度和精度由不同的人实现效果可能会有天差之别,而这些机器学习平台是Google、Facebook、亚马逊这些人工智能顶尖的企业花大力气验证和优化的,所以效率自然不在话下。
02
选择哪个机器学习平台?
机器学习平台有很多,tensorflow、pytorch、mxnet、caffe、sklearn、theno、keras,我个人推荐在tensorflow、pytorch、mxnet三个里面进行选择,因为这三个平台有以下几个优点。
- 灵活、方便推理
- 安装配置容易
- 强大的社区支持
那tensorflow、pytorch、mxnet又怎么选择呢?我简单介绍一下这几个机器学习平台的优缺点,大家可以根据自己的判断自行选择。
tensorflow
tensorflow是一个基于计算图和会话的深度学习平台,tensorflow给我的感觉就是一个庞然大物,这几年随着Google不断的调整和往里面加功能,这个平台变得非常大,里面含有keras模块,slim模块,还有eager模式,tensorflow的优点有:
- 基于符号式编程,速度快。
- 功能丰富,既有灵活的搭建,又有keras、slim这些简洁、集成度高的模块。
- 可视化好,有tensorboard这个可视化工具支撑,能够让我们更加清楚搭建的网络架构、数据流向。
- 强大的社区支持,由于tensorflow用户多,所以当遇到问题的时候会相对容易找到解决方案。
当然tensorflow也有缺点,我觉得正是因为太庞大了,所以有很多功能非常混乱,基于计算图和会话搭建会很不方便。
pytorch
pytorch自从诞生之后就迅速的成为了宠儿,因为它的出现解决了很多以往深度学习平台的痛点:
- 命令式编程,实现简单。
- 数据加载API设计的好,使用方便。
- 上手简单,仅凭这一点就已经很吸引人了。
- 自定义扩展。
mxnet
这是一款有亚马逊推出的深度学习平台,最近看《动手学深度学习》时顺便把mxnet学了一遍,mxnet主要有以下几个优点:
- 同时支持符号式编程和命令式编程,既有tensorflow的快速又有pytorch的简单。
- 支持多GPU和多机分布式。
- 有丰富的与训练模型。
03
有哪些学习资源?
上Google搜一下,会发现有很多各式各样的课程和学习资源,可谓是天花乱坠,我一直秉持一个理念“资源不再多,挑选少数有价值的好好学一下比把所有的都学一遍要有效果”,下面我就针对性的推荐一下我认为比较好的几个资源。
tensorflow
- tensorflow官方文档
首推当然是官方文档,官方的才是最靠谱,最了解内部详情的,官方文档比较简洁,提供了MNIST、卷积神经网络、可视化等常用的场景,而且在卷积神经网络中以cifar-10为例几乎涵盖了tensorflow常用的功能和计算图搭建流程,详细把这份文档看完基本就掌握了tensorflow的使用。
http://www.tensorfly.cn/tfdoc/tutorials/overview.html
- tensorflow_course
如果觉得官方文档不能够让你变成tensorflow熟手,那就试着用tensorflow完成几个机器学习算法的搭建,tensorflow_course是一个gihub资源,目前已经9.5k个star,受欢迎程度可见一斑,上面有传统算法,例如线性回归、支持向量机,也有深度学习算法,例如卷积神经网络,能够让你在学习机器学习的过程中进一步熟练tensorflow。
https://github.c
om/osforscience/TensorFlow-Course
- tensorflow_cookbook
这也是一个github项目资源,虽然不如上面这个火热,但是目前也拥有4.1k个star,和上面这个资源有些类似之处,包括传统算法和深度学习算法的实现,可以边学习机器学习知识、边学习深度学习平台。
https://github.com/nfmcclure/tensorflow_cookbook
还有一些tensorflow的系列教程,包括斯坦福的tensorflow教程,我列在下面,需要的可以自行看一下。
https://github.com/chiphuyen/stanford-tensorflow-tutorials
https://github.com/pkmital/tensorflow_tutorials
https://github.com/Hvass-Labs/TensorFlow-Tutorials
pytorch
- pytorch官方文档
首先推荐的当然还是官方的文档,前面已经说过,官方文档是最了解自己工具的,也知道哪些该用,哪些需要学习,所以官方文档简洁、节省时间。
https://pytorch-cn.readthedocs.io/zh/latest/
- pytorch_list
如果觉得官方文档内容不够,可以看一下这个github资源,目前5.4k个star,这个资源可以称得上是大合集,包括计算机视觉、自然语言处理、教程和示例、优秀文章的实现,非常全面。
https://github.com/bharathgs/Awesome-pytorch-list
mxnet
关于mxnet学习资源我只推荐一个,就是李沐的《动手学深度学习》,原因很简单,原作者出品的,质量必然值得信赖,而且这个课程以深度学习学习为目标,会讲解优化算法、卷积神经网络、自然语言处理等,在实现过程中会使用mxnet和gluon,会涉及到mxnet底层函数的实现,也会涉及到集成函数的使用,在学习过程中不知不觉就上手了。