【深度学习】入门深度学习真的很困难吗?从这几方面下手轻松破解!

本文针对想要入门深度学习的新手,解答了所需的硬件、软件选择和入门背景。硬件方面,游戏产业推动的GPU发展对深度学习至关重要,特别是CUDA支持的GPU。如果没有GPU,可以考虑云服务或构建自己的机器。软件上,推荐使用如PyTorch这样的动态计算库,因其易于调试和使用。对于背景要求,一年的编程经验就足以开始学习,而数据量远小于普遍认知,迁移学习可以处理较小的数据集。
摘要由CSDN通过智能技术生成

原文来源:fast.ai

作者:Rachel Thomas

编译:嗯~阿童木呀

来源:「雷克世界」授权 产业智能官 转载。


对于想要入门深度学习的新手来说,可能会存在以下几个问题:我需要什么样的电脑来学习深入学习?对初学者来说什么样的深度学习库比较合适?该如何将深度学习投入到生产中?我认为所有这些问题都都涵盖在一个主题之下,即在深度学习中需要的硬件、软件、背景和数据是什么样的?这篇文章就是专门针对那些刚接触深度学习这个领域,并且对入门感兴趣的新手们的。


你需要的硬件


真的要非常感谢游戏产业。


毫不夸张地说,电子游戏产业在收入方面要大于电影和音乐产业的总和。在过去的20年里,电子游戏产业推动了GPU(graphical processing units,图形处理单元)的巨大进步,即用于绘制图形所需的矩阵运算。幸运的是,这些正是深度学习所需的计算类型。而GPU技术的这些进步则是一个关键部分,诠释了为什么现在的神经网络比几十年前更为强大。在大多数情况下,如果没有GPU那深度学习模型的训练过程将会非常缓慢。


并非所有的GPU都是一样的


大多数深度学习从业者并不是直接对GPU进行编程,我们正在使用软件库(如PyTorch或TensorFlow)来处理这个问题。但是,想要有效使用这些库,你需要使用正确类型的GPU。


CUDA和OpenCL是进行GPU编程的两种主要方式。CUDA是迄今为止开发最为完善的、拥有最广泛的生态系统,并且得到深度学习库最有力的支持。CUDA是由Nvidia创建的专有语言,因此它不能被其他公司的GPU使用。


今年夏天,AMD宣布发布一个名为ROCm的平台,为深度学习提供更多的支持。而ROCm对于诸如PyTorch、TensorFlow、MxNet和CNTK等主要的深度学习库,目前仍处于开发阶段。虽然我非常希望看到一个开源的替代方案能够取得成功,但不得不承认,我发现ROCm的文档难以理解。我刚刚阅读了ROCm网站的概述、入门和深度学习页面,但仍然不能用我自己的话来对ROCm进行一个概述,尽管我想在这里把它涵盖在内以便更为完整。(我虽然没有硬件背景,但我认为像我这样的数据科学家应该成为该项目目标受众的一部分。)


如果你没有GPU 


如果你的电脑没有GPU,那么你有以下几个很好的选择:


•通过浏览器使用Crestle:Crestle是一个服务器(由fast.ai学生Anurag Goel开发),它能够为你提供一个已经建立好的云服务,其中,所有的流行科学和深度学习框架都已预先安装和配置好以在云端的GPU上得以运行。它很容易通过你的浏览器进行访问。新用户可免费获得10小时和1 GB的存储空间。之后,GPU的使用费用为每小时59美分。对于那些刚接触AWS或刚开始使用console的新手们来说,这是一个不错的选择。


•通过你的控制台设置AWS云实例:你可以按照本fast.ai设置课程中的步骤创建一个AWS实例(能够远程为你提供Nvidia GPU)。AWS为此每小时收取90美分。尽管我们的设置材料都是关于AWS的,但是一位fast.ai的学生创建了一个用于深度学习的Azure虚拟机的指南。如果有人写关于Google云端引擎的博客文章,我很乐意分享该链接。


•构建你自己的盒子。以下是我们fast.ai论坛中一个非常冗长的话题,人们可以在其中提出问题、分享他们正在使用的组件,并发布其他有用的链接和提示。最便宜的新型Nvidia GPU是300美元左右,一些学生在eBay或Craigslist上发现了更为便宜的二手GPU,而另外一些则要为更强大的GPU支付更多的费用。我们的一些学生写了篇博文,记录了他们是如何构造自己的机器的:


1.Mariya Yao所写的《深度困惑:在构建深度学习机过程中的不幸经历》。

https://www.topbots.com/deep-confusion-misadventures-in-building-a-machine-learning-server/


2.Sravya Tirukkovalur所写的《以一种懒惰而快速的方式构建一个深度学习机》。

https://medium.com/impactai/setting-up-a-deep-learning-machine-in-a-lazy-yet-quick-way-be2642318850


3.Brendan Fortuner所写的《创建自己的深度学习盒》

https://towardsdatascience.com/building-your-own-deep-learning-box-47b918aea1eb


你所需要的软件


可以说,深度学习是一个相对不成熟的领域,因此相应的库和工具变化速度非常快。例如,我们在2016年课程中选择使用的Theano,现在已经不再使用了。而我们目前使用的PyTorch,则是在今年(2017年)刚刚发布的。就像Jeremy以前所写的那样,你应该要保持这样一种假设,你今天所学到的任何特定的库和软件都将在一两年内被淘汰。而在这个过程中,最重要的是理解底层概念。为此,我们在Pytorch上创建了自己的库,我们相信这将使深度学习概念更为清晰。


Python是目前为止深度学习中最为常用的语言。现如今,有许多深度学习库可供选择,而几乎所有主要科技公司都支持不同的库,尽管这些公司的员工经常混合使用各种工具。深度学习库包括TensorFlow(谷歌)、PyTorch(Facebook)、MxNet(华盛顿大学,由亚马逊改编)、CNTK(微软)、DeepLearning4j(Skymind)、Caffe2(也是Facebook),Nnabla(索尼)、PaddlePaddle(百度) 、以及Keras(一种高级API,在此列表中的其他几个库上运行)。所有这些都有可用的Python选项。


动态与静态图计算


在fast.ai中,我们优先考虑程序员可以进行实验和迭代(通过更简单的调试和更直观的设计),这要比理论性能上的速度提高重要得多。而这就是我们使用PyTorch的原因,它是一个具有动态计算功能的、灵活的深度学习库。


深度学习库与库之间的一个区别在于,它们是使用动态还是静态计算(诸如MxNet和现在的TensorFlow,是两者都允许的)。动态计算,意味着程序是按照你所编写的顺序执行的。这通常会使调试更为容易,并且使得将想法从大脑中转换成代码变得更为直接、简单。静态计算,意味着你要预先为你的神经网络构建一个结构,然后在上面执行操作。从理论上讲,这使得编译器能够进行更好的优化,尽管这同时也意味着你预计程序能做的和编译器真正执行的内容之间可能会有更多的脱节。另外,这还意味着,bug可能会更多地从导致其产生的代码中移除(例如,如果在构建图表时出现错误,你可能不会意识到,直到稍后你在上面执行一个操作)。即使从理论上来看,使用静态计算图的语言要比使用动态计算的语言具有更好的性能,但我们经常发现,在实践中并非如此。


谷歌的TensorFlow主要使用静态计算图,而Facebook的PyTorch则使用动态计算。(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值