Coursera | Andrew Ng (02-week3-3.10)—深度学习框架

该系列仅在原课程基础上部分知识点添加个人学习笔记,或相关推导补充等。如有错误,还请批评指教。在学习了 Andrew Ng 课程的基础上,为了更方便的查阅复习,将其整理成文字。因本人一直在学习英语,所以该系列以英文为主,同时也建议读者以英文为主,中文辅助,以便后期进阶时,为学习相关领域的学术论文做铺垫。- ZJ

Coursera 课程 |deeplearning.ai |网易云课堂


转载请注明作者和出处:ZJ 微信公众号-「SelfImprovementLab」

知乎:https://zhuanlan.zhihu.com/c_147249273

CSDN:http://blog.csdn.net/junjun_zhao/article/details/79122934


3.10 Deep Learning frameworks (深度学习框架)

(字幕来源:网易云课堂)

Coursera | Andrew Ng (02-week3-3.10)—深度学习框架_第1张图片

You’ve learned to implement deep learning algorithms more or less from scratch using Python and NumPy.And I’m glad you did that because I wanted you tounderstand what these deep learning algorithms are really doing.But you find unless you implement more complex models,such as convolutional neural networks or recurrent neural networks,or as you start to implement very large models that is increasingly not practical,at least for most people is not practical to implement everything yourself from scratch.Fortunately, there are now many good deep learning software frameworks that can help you implement these models.To make an analogy,I think that hopefully you understand how to do a matrix multiplication and you should be able to implement how to code to multiply two matrices yourself.But as you build very large applications,you’ll probably not want to implement your own matrix multiplication functionbut instead you want to call a numerical linear algebra library that could do it more efficiently for you.But this still helps that you understand how multiplying two matrices work.So I think deep learning has now matured to that point where it’s actually more practical you’ll be more efficient doing some things with some of the deep learning frameworks.So let’s take a look at the frameworks out there.

你已经差不多从零开始学习了,使用 Python 和 NumPy 实现深度学习算法,我很高兴你这样做了 因为我希望你,理解这些深度学习算法实际上在做什么,但是你会发现 除非应用更复杂的模型,例如卷积神经网络 或者循环神经网络,或者当你开始应用很大的模型 否则它就越来越不实用了,至少对大多数人而言,从零开始全部靠自己实现并不现实,幸运的是 现在有很多好的深度学习软件框架,可以帮助你实现这些模型,类比一下,我猜你知道如何做矩阵乘法,你还应该知道如何用编程实现两个矩阵相乘,但是当你在建很大的应用时,你很可能不想用你自己的矩阵乘法函数,而是想要访问一个数值线性代数库,它会更高效,但如果你明白两个矩阵相乘是怎么回事,还是挺有用的,我认为现在深度学习已经很成熟了,利用一些深度学习框架会更加实用,会使你的工作更加有效,那就让我们来看一下有哪些框架。

Today, there are many deep learning frameworksthat makes it easy for you to implement neural networks,and here are some of the leading ones.Each of these frameworks has a dedicated user and developer communityand I think each of these frameworks isa credible choice for some subset of applications.There are lot of people writing articles comparing these deep learning frameworks and how well these deep learning frameworks changes.And because these frameworks are often evolving and getting better month to month,I’ll leave you to do a few internet searches yourself,if you want to see the arguments on the pros and cons of some of these frameworks.But I think many of these frameworks are evolving and getting better very rapidly.

Coursera | Andrew Ng (02-week3-3.10)—深度学习框架_第2张图片

现在有许多深度学习框架,能让实现神经网络变得更简单,我们来讲主要的几个,每个框架都是针对某一个用户或开发者群体的,我觉得这里的每一个框架,都是某类应用的可靠选择,有很多人写文章比较这些深度学习框架,以及这些深度学习框架发展得有多好,而且因为这些框架往往不断进化 每个月都在进步,如果你想看看关于这些框架的优劣之处的讨论,我留给你自己去上网搜索,但我认为很多框架都在很快进步 越来越好。

So rather than too strongly endorsing any of these frameworks I want to share with you the criteria I would recommend you use to choose frameworks.One important criteria is the ease of programming,and that means both developing the neural network anditerating on it as well as deploying it for production,for actual use, by thousands or millions or maybe hundreds of millions of users,depending on what you’re trying to do.A second important criteria is running speeds,especially training on large data sets,some frameworks will let you run and train your neural network more efficiently than others.And then, one criteria that people don’t often talk about but I think is importantis whether or not the framework is truly open.And for a framework to be truly open,it needs not only to be open source but I think it needs good governance as well.Unfortunately, in the software industry some companies have a history of open sourcing software but maintaining single corporation control of the software.And then over some number of years, as people start to use their software,some companies have a history of gradually closing off what was open source,or perhaps moving functionality into their own proprietary cloud services.So one thing I pay a bit of attention to is how much you trust that the framework will remain open source for a long timerather than just being under the control of a single company,which for whatever reason may choose to close it off in the future even if the software is currently released under open source.

Coursera | Andrew Ng (02-week3-3.10)—深度学习框架_第3张图片

因此我就不做强烈推荐了,而是与你分享推荐一下选择框架的标准,一个重要标准就是便于编程,这既包括神经网络的开发,和迭代 还包括为产品进行配置,为了成千上百万 甚至上亿用户的实际使用,取决于你想要做什么,第二个重要标准是运行速度,特别是训练大数据集时,一些框架能让你更高效地运行和训练神经网络,还有一个标准人们不常提到 ,但我觉得很重要,那就是这个框架是否真的开放,要是一个框架真的开放,它不仅需要开源 而且需要良好的管理,不幸的是 在软件行业中,一些公司有开源软件的历史,但是公司保持着对软件的全权控制,当几年时间过去 人们开始使用他们的软件时,一些公司开始逐渐关闭曾经开放的资源,或者将功能转移到他们专营的云服务中,因此我会注意的一件事就是,你能否相信这个框架能长时间保持开源,而不是在一家公司的控制之下,它未来有可能出于某些原因选择停止开源,即便现在这个软件是以开源的形式发布的。

But at least in the short term depending on your preferences of language,whether you prefer Python or Java or C++ or something else,and depending on what application you’re working on,whether it’s computer vision or natural language processingor online advertising or something else,I think multiple of these frameworks could be a good choice.So that’s it on program frameworks.By providing a higher level of abstraction than just a numerical linear algebra library,any of these program frameworks can make you moreefficient as you develop machine learning applications.

但至少在短期内 取决于你对语言的偏好,看你更喜欢 Python Java还是C++或者其他什么也取决于你在开发的应用,是计算机视觉 还是自然语言处理,或者线上广告 等等,我认为这里的多个框架都是很好的选择,程序框架就讲到这里,通过提供比数值线性代数库更高程度的抽象化,这里的每一个程序框架都能让你,在开发深度机器学习应用时更高效。


PS: 欢迎扫码关注公众号:「SelfImprovementLab」!专注「深度学习」,「机器学习」,「人工智能」。以及 「早起」,「阅读」,「运动」,「英语 」「其他」不定期建群 打卡互助活动。

你可能感兴趣的:(深度学习,正则化以及优化,深度学习,吴恩达)