谷歌算法研究员:我为什么钟爱PyTorch?
老铁们好!我是一名前谷歌的算法研究员,处理深度学习相关项目已有三年经验,接下来会在平台上给大家分享一些深度学习,计算机视觉和统计机器学习的心得体会,当然了内推简历一定是收的。
这篇文章,不想说太多学术的东西,和大家简单谈一谈深度学习框架的选择,这几年在辅导的过程中,见过了太多同学在无意义的事情上浪费了太多精力,而如果第一个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?的更多相关文章
- [源码解析] PyTorch 如何实现后向传播 (4)---- 具体算法
[源码解析] PyTorch 如何实现后向传播 (4)---- 具体算法 目录 [源码解析] PyTorch 如何实现后向传播 (4)---- 具体算法 0x00 摘要 0x01 工作线程主体 1.1 ...
- 《AI算法工程师手册》
本文转载自:http://www.huaxiaozhuan.com/ 这是一份机器学习算法和技能的学习手册,可以作为学习工作的参考,都看一遍应该能收获满满吧. 作者华校专,曾任阿里巴巴资深算法工程师, ...
- 强化学习策略梯度方法之: REINFORCE 算法(从原理到代码实现)
强化学习策略梯度方法之: REINFORCE 算法 (从原理到代码实现) 2018-04-01 15:15:42 最近在看policy gradient algorithm, 其中一种比较经典的 ...
- 谷歌SEO和百度SEO的区别
远程桌面连接 一直有一个现象:关于谷歌优化或只是以谷歌为例谈SEO观点或技术时,经常有读者说,不适用于百度,希望多看到关于百度SEO的帖子上一篇利用规范的标签在谷歌排名中陷害竞争对手的帖子,就有好 ...
- Pytorch | BERT模型实现,提供转换脚本【横扫NLP】
<谷歌终于开源BERT代码:3 亿参数量,机器之心全面解读>,上周推送的这篇文章,全面解读基于TensorFlow实现的BERT代码.现在,PyTorch用户的福利来了:一个名为Huggi ...
- 人工智能头条(公开课笔记)+AI科技大本营——一拨微信公众号文章
不错的 Tutorial: 从零到一学习计算机视觉:朋友圈爆款背后的计算机视觉技术与应用 | 公开课笔记 分享人 | 叶聪(腾讯云 AI 和大数据中心高级研发工程师) 整 理 | Leo 出 ...
- ML平台_设计要点
如果说机器是人类手的延伸.交通工具是人类腿的延伸,那么人工智能就是人类大脑的延伸,甚至可以帮助人类自我进化,超越自我.人工智能也是计算机领域最前沿和最具神秘色彩的学科,科学家希望制造出代替人类思考的智 ...
- word2vec是如何工作的?
如何有效的将文本向量化是自然语言处理(Natural Language Processing: NLP)领域非常重要的一个研究方向.传统的文本向量化可以用独热编码(one-hot encoding). ...
- 有奖投票丨HC2019开发者关注的TOP10问题你最想听哪个?
目前,人工智能已经成为广大开发者重点关注的技术领域.然而,随着人工智能技术的快速发展,AI应用场景复杂度在与日俱增,算法调教也亟需不断成熟,这些都为开发者们带来了更多全新的挑战.如何快速把握前沿技术的 ...
随机推荐
- win10 损坏 bios?
自从前几个月升级为win10后,主板莫名奇妙的就出问题了,遇到3块不同型号2块技嘉b75,1块微信ph67 技嘉b75-ds3v 技嘉b75m-d3v 微星ph67s-c43 ms-7673 1.0 ...
- PAT乙级真题及训练题 1025. 反转链表 (25)
PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...
- 【Java123】JavaWeb Servlet开发
http://www.runoob.com/servlet/servlet-intro.html https://www.cnblogs.com/xdp-gacl/tag/JavaWeb学习总结/de ...
- Docker介绍-hc课堂笔记
1,传统模式-多个服务器:申请.安装jdk等.部署环境. 容器-整包,把有东西打包到一起,把这个包放在服务器上. linux中装了docker,起100个服务,改个数字就可以,5分钟左右. 2,虚拟化 ...
- JS兼容各个浏览器的本地图片上传即时预览效果
JS兼容各个浏览器的本地图片上传即时预览效果 很早以前 在工作曾经碰到这么一个需求,当时也是纠结了很久,也是google了很久,没有碰到合适的demo,今天特意研究了下这方面的的问题,所以也就做了个简 ...
- grunt项目构建工具
JS项目构建工具Grunt实践 一:下面来介绍下如何用grunt合并,压缩js文件. 大概步骤有如下: 1. 新建文件夹相对应的项目 比如文件名叫:gruntJs 2. 新建文 ...
- 简单的django配置和命令
1.创建项目:django-admin startproject 项目名称 2.进入项目:cd 项目名称 3.创建子应用:python manage.py startapp 子应用名称 4.把子应用添 ...
- 【js】某字符串多次替换
eg: var str="icon icon-1chkedchkedchked"; var strNew=str.replace(new RegExp("chked&q ...
- 20155223 Exp2 后门原理与实践
20155223 Exp2 后门原理与实践 实验预热 一.windows获取Linux shell Windows:使用 ipconfig 命令查看当前机器IP地址. 进入ncat所在文件地址,输入命 ...
- 20155323刘威良《网络对抗》Exp5 MSF基础应用
20155323刘威良<网络对抗>Exp5 MSF基础应用 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实 ...