老铁们好!我是一名前谷歌的算法研究员,处理深度学习相关项目已有三年经验,接下来会在平台上给大家分享一些深度学习,计算机视觉和统计机器学习的心得体会,当然了内推简历一定是收的。
这篇文章,不想说太多学术的东西,和大家简单谈一谈深度学习框架的选择,这几年在辅导的过程中,见过了太多同学在无意义的事情上浪费了太多精力,而如果第一个demo始终无法顺利跑动,这无疑是非常fraustrated的。

1. 操作系统

这个是最好说明的,使用Ubuntu或是OS系统,在笔者看来Windows本身的设计逻辑使得它非常不适合进行希望得到快速反馈的行为。而Unix-base的模型可以对输入进行快速应答,而且Windows的注册表文件实在是非常反人类。考虑到Mac的高昂成本,那么笔者实际上是在推荐Ubuntu,win本下载vmware使用Ubuntu虚拟机即可,如有需要可在评论提出,会给出Ubuntu的相关安装和配置说明。

2. 深度学习框架

笔者接触过不少的深度学习框架,也就是说,放弃过很多框架。在工作中踩的坑,有些现在回想起来,依然没法解决。

最早使用的是Caffe,如果是有过一些工作经验的AI从业者,一定对这个名字记忆犹新,早期几乎所有的classic模型都是caffe-base的,而且它的可读性很好,在进行了一定的基础学习后,可以轻松理解模型。但是caffe最大的缺点在于,它的安装较其他的框架而言更加繁琐,配置起来很麻烦,甚至出现过公司里所有做object detection的实习生都要使用同一台服务器跑模型,因为他们自己的电脑上都有着各种各样的错误提示,而且mentor们也看不出来问题。

从使用的广度来看,谷歌公司给出的TensorFlow在这几年独占鳌头,它使用的静态图是一种很有趣的思路,我们知道,在进行一系列的运算时一定有办法可以将步骤和计算损耗进行简化。

现在我们手上有一个长度为n的向量,记为(x1,x2,...xn)(x_1, x_2, ...x_n)(x1​,x2​,...xn​)。现在在某个模型中需要对模型进行缩放之后的加和,巧合的是缩放系数是1n\frac{1}{n}n1​。那么如果需要对模型分别缩放再逐个求和,需要的计算次数是2n2n2n,而如果我们将其先求和再缩放,即∑xin=1n∑xi\sum \frac{x_i}{n}=\frac{1}{n}\sum x_i∑nxi​​=n1​∑xi​,计算次数变为n+1n+1n+1,减少了接近一半的计算量。在进行了这样的优化之后,需要对模型进行对应的变换,这在第一次运算时会损耗一定的时间,但是之后的每一次操作都会从中受益。当然这是个小学级别的例子,实际运用不会是这么简单的情况。
Keras本质上就是TensorFlow的一个高级封装,所以TensorFlow有的缺点它都有,但是封装保证了它的便捷性,只需要不多的几行就能完成模型的搭建,不过,灵活性较差,工业领域一般没人用这个。
那么,终于可以给出My Favorite了!

PyTorch是Python+Torch的结果,其中Torch和numpy十分类似,所以这也是data scientist转行AI的首选框架。它以Python为主,与TensorFlow相比,对于GPU的接口更加友好,实乃学习工作必备之良药。
相较于TensorFlow而言,PyTorch是一个动态的框架,不需要每次操作时使用相同的计算图,这也就使得

不过对于有一定基础的同学,只要在电脑上安装了anaconda,就可以直接通过

pip install torch

即可完成PyTorch的安装工作,除此之外FAIR的大学霸们还贴心的帮我们完成了很多经典模型的搭建,都存在torchvision库里了,通过

pip install torchvision

即可完成。深度学习很多时候都像是搭积木,通过torchvision可以快速将已有的模型作为模块添加到整体中。

如果使用OS系统进行具有CUDA支持的PyTorch安装,则需要如下指令:

export CMAKE_PREFIX_PATH=[anaconda root directory]
conda install numpy pyyaml mkl mkl-include setuptools cmake cffi typing

接下来进行源码安装

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install

接下来就尽情享受PyTorch的快乐吧!!


最近有很多的老铁跟我说:什么时候分享人工智能的TensorFlow框架深度学习、CNN卷积神经网络、解析几何、线性代数等等技术点的文章。

这方面的学习资料我倒是整理出来了,但是发文章,我想说老铁们我这要发到猴年马月呀!每个人的 “口味” 都不一样。

最后我给大家创建一个能够领取这些知识点的公众号!!

前一百个名额可以免费领取!!!先到先得。。。

谷歌算法研究员:我为什么钟爱PyTorch?的更多相关文章

  1. [源码解析] PyTorch 如何实现后向传播 (4)---- 具体算法

    [源码解析] PyTorch 如何实现后向传播 (4)---- 具体算法 目录 [源码解析] PyTorch 如何实现后向传播 (4)---- 具体算法 0x00 摘要 0x01 工作线程主体 1.1 ...

  2. 《AI算法工程师手册》

    本文转载自:http://www.huaxiaozhuan.com/ 这是一份机器学习算法和技能的学习手册,可以作为学习工作的参考,都看一遍应该能收获满满吧. 作者华校专,曾任阿里巴巴资深算法工程师, ...

  3. 强化学习策略梯度方法之: REINFORCE 算法(从原理到代码实现)

    强化学习策略梯度方法之: REINFORCE 算法 (从原理到代码实现) 2018-04-01  15:15:42   最近在看policy gradient algorithm, 其中一种比较经典的 ...

  4. 谷歌SEO和百度SEO的区别

    远程桌面连接 一直有一个现象:关于谷歌优化或只是以谷歌为例谈SEO观点或技术时,经常有读者说,不适用于百度,希望多看到关于百度​​SEO的帖子上一篇利用规范的标签在谷歌排名中陷害竞争对手的帖子,就有好 ...

  5. Pytorch | BERT模型实现,提供转换脚本【横扫NLP】

    <谷歌终于开源BERT代码:3 亿参数量,机器之心全面解读>,上周推送的这篇文章,全面解读基于TensorFlow实现的BERT代码.现在,PyTorch用户的福利来了:一个名为Huggi ...

  6. 人工智能头条(公开课笔记)+AI科技大本营——一拨微信公众号文章

    不错的 Tutorial: 从零到一学习计算机视觉:朋友圈爆款背后的计算机视觉技术与应用 | 公开课笔记 分享人 | 叶聪(腾讯云 AI 和大数据中心高级研发工程师) 整    理 | Leo 出   ...

  7. ML平台_设计要点

    如果说机器是人类手的延伸.交通工具是人类腿的延伸,那么人工智能就是人类大脑的延伸,甚至可以帮助人类自我进化,超越自我.人工智能也是计算机领域最前沿和最具神秘色彩的学科,科学家希望制造出代替人类思考的智 ...

  8. word2vec是如何工作的?

    如何有效的将文本向量化是自然语言处理(Natural Language Processing: NLP)领域非常重要的一个研究方向.传统的文本向量化可以用独热编码(one-hot encoding). ...

  9. 有奖投票丨HC2019开发者关注的TOP10问题你最想听哪个?

    目前,人工智能已经成为广大开发者重点关注的技术领域.然而,随着人工智能技术的快速发展,AI应用场景复杂度在与日俱增,算法调教也亟需不断成熟,这些都为开发者们带来了更多全新的挑战.如何快速把握前沿技术的 ...

随机推荐

  1. [IDEA_4] IDEA 从 GitHub 上 pull 项目到本地

    0. 说明 通过参考的链接我们已经知道了怎么安装配置 Git  .GitHub ,如何使用 IDEA 将本地项目上传到 GitHub. 现在是学习怎么通过 IDEA 将项目从 GitHub pull ...

  2. NIO 学习笔记

    0. 介绍 参考   关于Java IO与NIO知识都在这里   ,在其基础上进行修改与补充. 1. NIO介绍 1.1 NIO 是什么 Java NIO 是 java 1.4, 之后新出的一套IO接 ...

  3. 网络基础之IP地址和子网掩码

    IP地址 IP是英文Internet Protocol的缩写,意思是"网络之间互连的协议",也就是为计算机网络相互连接进行通信而设计的协议.在因特网中,它是能使连接到网上的所有计算 ...

  4. 团队作业——Alpha冲刺 11/12

    团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:预览界面布局实现,并留下交互接口 明日任务:预览界面中自定义保存的实现 郭剑南 今日任务:尝试解决Python编写程序无法在Android ...

  5. angularjs ngRoute和ui.router对比

    ngRoute模块是angularjs自带的路由模块,ui.router是一个第三方路由模块,接下来将对两者进行一个对比: ng-router(angular-router.js) ng-view n ...

  6. jquery1.9 下检测浏览器类型和版本的方法

    Jquery1.9版本中$.browser已被剔除: 判断浏览器类型: 复制代码 代码如下: $.browser.mozilla = /firefox/.test(navigator.userAgen ...

  7. 死磕nginx系列--nginx 限流配置

    限流算法 令牌桶算法 算法思想是: 令牌以固定速率产生,并缓存到令牌桶中: 令牌桶放满时,多余的令牌被丢弃: 请求要消耗等比例的令牌才能被处理: 令牌不够时,请求被缓存. 漏桶算法 算法思想是: 水( ...

  8. ElasticSearch + Logstash + Kibana 搭建笔记

    ElasticSearch 安装 1.下载 ElasticSearch,本文使用的版本为 5.5.1. 2.配置 path.data: /data/es #数据路径 path.logs: /data/ ...

  9. OpenCV——图像的深度与通道数讲解

    矩阵数据类型: – CV_(S|U|F)C S = 符号整型 U = 无符号整型 F = 浮点型 E.g.: CV_8UC1 是指一个8位无符号整型单通道矩阵, CV_32FC2是指一个32位浮点型双 ...

  10. js基础知识入门总结

    1.第一个js程序 一个项目包括三部分:前端(html.css.js).数据库.后端技术 引入方式:页面中直接写,script标签引入 js事件绑定: <input type="but ...