文章首发于微信公众号《有三AI》

【github干货】主流深度学习开源框架从入门到熟练

今天送上有三AI学院第一个github项目

01项目背景

目前深度学习框架呈百家争鸣之态势,光是为人熟知的就有caffe,tensorflow,pytorch/caffe2,keras,mxnet,paddldpaddle,theano,cntk,tiny-dnn,deeplearning4j,matconvnet等,一个合格的深度学习算法工程师怎么着都得熟悉其中的3个以上吧。

而且,学习不应该停留在官方的demo上,而是要学会从自定义数据的读取,自定义网络的搭建,模型的训练,模型的可视化,模型的测试与部署等全方位进行掌握

因此,我们开设了这个github项目,以图像分类任务为基准,带领大家一步一步入门,后续会增加分割,检测等任务。

当前的图像分类任务为二分类的表情分类任务,为微笑与非微笑两个类别,案例样本如下。

无表情

微笑

02框架简介

总的来说,深度学习系统通常有两种编程方式,一种是声明式编程(declarative programming),用户只需要声明要做什么,而具体执行则由系统完成。以Caffe,TensorFlow的计算图为代表。优点是由于在真正开始计算的时候已经拿到了整个计算图,所以可以做一系列优化来提升性能。实现辅助函数也容易,例如对任何计算图都提供forward和backward函数,另外也方便对计算图进行可视化,将图保存到硬盘和从硬盘读取。缺点是debug很麻烦,监视一个复杂的计算图中的某个节点的中间结果并不简单,逻辑控制也不方便。

一种是命令式编程(imperative programming),以numpy,torch/pytorch为代表,每个语句按照原来的意思顺序执行。它 的特点是语义上容易理解,灵活,可以精确控制行为。通常可以无缝地和主语言交互,方便地利用主语言的各类算法,工具包,debug和性能调试器,但是实现统一的辅助函数和提供整体优化都很困难。

综上,各有优劣,自由选择,这里不是为了给大家详细介绍框架,而是快速扫盲,更多请阅读对应文章和官方文档,相关代码进行学习。

2.1 caffe

Caffe是伯克利的贾扬清主导开发,以C++/CUDA 代码为主,最早的深度学习框架之一,比 TensorFlow、Mxnet、Pytorch 等都更早,需要进行编译安装。

支持命令行、Python和Matlab接口,单机多卡、多机多卡等都可以很方便的使用,快速入门见下文。

【caffe速成】caffe图像分类从模型自定义到测试

2.2 tensorflow

TensorFlow是Google brain推出的开源机器学习库,与Caffe一样,主要用作深度学习相关的任务。与Caffe相比TensorFlow的安装简单很多。

TensorFlow = Tensor + Flow,Tensor 就是张量,代表N维数组,这与Caffe中的blob是类似的;Flow即流,代表基于数据流图的计算。

TensorFlow最大的特点是计算图,即先定义好图,然后进行运算,所以所有的TensorFlow代码,都包含两部分:

(1) 创建计算图,表示计算的数据流。它做了什么呢?实际上就是定义好了一些操作,你可以将它看做是Caffe中的prototxt 的定义过程。

(2)运行会话,执行图中的运算,可以看作是Caffe中的训练过程。只是TensorFlow的会话比Caffe灵活很多,由于是Python 接口,取中间结果分析,Debug等方便很多,快速入门见下文。

【tensorflow速成】Tensorflow图像分类从模型自定义到测试

2.3 mxnet

mxnet是amazon的官方框架,它尝试将上面说的两种模式无缝的结合起来。在命令式编程上MXNet提供张量运算,进行模型的迭代训练和更新中的控制逻辑;在声明式编程中MXNet支持符号表达式,用来描述神经网络,并利用系统提供的自动求导来训练模型,快速入门见下文。

【mxnet速成】mxnet图像分类从模型自定义到测试

2.4 pytorch 

一句话总结Pytorch = Python + Torch。

Torch是纽约大学的一个机器学习开源框架,几年前在学术界非常流行,包括Lecun等大佬都在使用。但是由于使用的是一种绝大部分人绝对没有听过的Lua语言,导致很多人都被吓退。后来随着Python的生态越来越完善,Facebook人工智能研究院推出了Pytorch并开源。Pytorch不是简单的封装Torch 并提供Python 接口,而是对Tensor以上的所有代码进行了重构,同TensorFlow一样,增加了自动求导。

后来Caffe2全部并入Pytorch,如今已经成为了非常流行的框架。很多最新的研究如风格化、GAN等大多数采用Pytorch源码,快速入门见下文。

【pytorch速成】Pytorch图像分类从模型自定义到测试

2.5 paddlepaddle 

正所谓google有tensorflow,facebook有pytorch,amazon有mxnet,作为国内机器学习的先驱,百度也有PaddlePaddle,其中Paddle即Parallel Distributed Deep Learning(并行分布式深度学习),整体使用起来与tensorflow非常类似,可参考下文。

【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试

2.6 keras

Keras是一个非常流行、简单的深度学习框架,它的设计参考了torch,用Python语言编写,是一个高度模块化的神经网络库,能够在TensorFlow,CNTK或Theano之上运行。 Keras的特点是能够快速实现模型的搭建,是高效地进行科学研究的关键,可参考下文。

【Keras速成】Keras图像分类从模型自定义到测试

2.7 其他

除了以上最常用的框架,还有theano,cntk,tiny-dnn,deeplearning 4j,matconvnet等,我们后续会补充教程,增强github案例,欢迎大家关注,下面是github项目链接,欢迎来做贡献。

https://github.com/longpeng2008/LongPeng_ML_Course

感谢各位看官的耐心阅读,不足之处希望多多指教。后续内容将会不定期奉上,欢迎大家关注有三公众号 有三AI

【github干货】主流深度学习开源框架从入门到熟练相关推荐

  1. 【完结】给新手的12大深度学习开源框架快速入门项目

    文/编辑 | 言有三 这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpen ...

  2. 系统学习深度学习(七)--主流深度学习开源框架对比

    转自:http://blog.csdn.net/u010167269/article/details/51810613,本文做了相关修改. 参考论文:<Comparative Study of ...

  3. 【杂谈】超过12个,150页深度学习开源框架指导手册与GitHub项目,初学CV你值得拥有...

    之前我们公众号输出了很多深度学习开源框架相关的内容,今天整理成技术手册给大家分享以方便阅读,下面是详细信息. 开源框架背景 现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caf ...

  4. 【杂谈】面向新手的深度学习开源框架指导手册与GitHub项目,欢迎加入我们的开源团队...

    之前我们公众号输出了很多深度学习开源框架相关的内容,现在整理成技术手册给大家分享以方便阅读,下面是详细信息. 开源框架背景 现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caf ...

  5. 【通知】有三AI发布150页深度学习开源框架指导手册与GitHub项目,欢迎加入我们的开源团队...

    之前我们公众号输出了很多深度学习开源框架相关的内容,今天整理成技术手册给大家分享以方便阅读,下面是详细信息. 开源框架背景 现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caf ...

  6. darknet框架_【通知】有三AI发布150页深度学习开源框架指导手册与GitHub项目,欢迎加入我们的开源团队...

    之前我们公众号输出了很多深度学习开源框架相关的内容,今天整理成技术手册给大家分享以方便阅读,下面是详细信息. 开源框架背景 现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caf ...

  7. 【CV实战】年轻人的第一个深度学习CV项目应该是什么样的?(支持13大深度学习开源框架)...

    计算机视觉发展至今,许多技术已经非常成熟了,在各行各业落地业务非常多,因此不断的有新同学入行.本次我们就来介绍,对于新手来说,如何做一个最合适的项目.本次讲述一个完整的工业级别图像分类项目的标准流程, ...

  8. 【完结】12大深度学习开源框架(caffe,tf,pytorch,mxnet等)快速入门项目

    这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...

  9. 12大深度学习开源框架(caffe,tensorflow,pytorch,mxnet等)汇总详解

    这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...

最新文章

  1. cavium公司xPliant芯片
  2. [渝粤教育] 中国地质大学 计算机图形学(新) 复习题
  3. 通俗的讲,这就是容器CPU隔离的底层实现机制
  4. java 垃圾回收 新生代_Java垃圾回收
  5. xclip linux_使用xclip在Linux命令行中复制和粘贴
  6. Codeforces976E Well played! 【贪心】
  7. 使用apt-get autoremove造成的系统无法开机
  8. 深度学习进行语音识别的方法 如何建立自己的语音识别系统
  9. 批量ping IP并检测IP延迟率和丢包率脚本
  10. IT项目管理之系统规划
  11. Java后台调用第三方支付接口(易宝支付)
  12. Halcon 深度学习(一):分类
  13. tushare找出箱体突破点
  14. 你必须掌握的人生定律
  15. 玩转直播:如何从 0 到 1 构建简单直播系统
  16. sql 基础语法 创建数据库和数据表 数据增删改查 分组查询 子查询回顾
  17. 怎么把ofd转换成PDF文件?分享给你个好用的方法。
  18. 周志华老师开课啦!机器学习视频课上线了(附地址)
  19. 人工智能“算法”与“数据”的产权保护
  20. 三星打印机通过无线网连接到服务器,多种连接方式 三星无线打印轻松享

热门文章

  1. 不清楚 spring 的这几个知识点,面试直接挂了!
  2. 2021-9-下旬 数据结构 - 线性表 - 循环链表 - java实现代码(复习用)
  3. php代码规范的书籍,php基本代码规范——PSR-1
  4. get方法报空指针_智能指针shared_ptr踩坑笔记
  5. 经典面试题:将有序数组、有序链表转换成平衡二叉树
  6. 剑指Offer #14 链表中倒数第k个结点(快慢指针) | 图文详解
  7. java解码base64的png图片_使用PHP对图片进行base64编码和解码(png、jpg,声音、视频)...
  8. linux 中卸载提示设备正忙怎么办?
  9. 看完这篇学会Ansible
  10. windows11推出:win10可免费升级,支持安卓APP,减重40%