Py学习  »  机器学习算法

热度直逼TensorFlow的深度学习框架,我用它画下女朋友最美的脸

图灵教育 • 4 年前 • 448 次点击  

这不,又一个程序员为爱变身灵魂画手,看得我都想学画画了。


阿华是幸运的,因为他找到了对的方法,事半功倍,最终有情人终成眷属。这也得益于 PyTorch易学易用,大多数人第一次使用 PyTorch 几乎可以做到无痛上手。就连深度学习三巨头之一,图灵奖得主 Yann LeCun 都在 Twitter 上为 PyTorch 背书。

从 2017 年 1 月 Facebook 公司开源 PyTorch 以来,短短两年时间,PyTorch 便与老牌框架 TensorFlow 势均力敌,成为开源社区仅次于它的深度学习框架。随着越来越多的公司用 PyTorch 进行算法开发,想深入了解它的人变得多起来。
其实 PyTorch 拥有丰富且全面的开发文档,多数人可以通过文档实现完美自学,但是如果希望能够系统学习,免得修炼路上走火入魔的,那阿华获得的这本秘笈也同样适合你。究竟是怎样的秘笈呢?咱们可以小小打探一下。

这秘笈可以说架构非常清晰,分为基础篇、实战篇和高级篇。针对入门 PyTorch 的读者来说,这样的设定是一个最佳的学习路线,真正实现从入门到进阶,而不是从入门到失踪。(得意.JPG)


基础篇


工欲善其亊,必先利其器。为了满足深度学习任务中“高计算量”这一特殊需求,在基础篇里,作者便从硬件的选择讲起,教你如何配置一台合适的计算机,以及如何在 Mac OS X、Ubuntu 和 Windows 系统下配置 PyTorch 的运行环境。配置完毕后,万事俱备,PyTorch 的学习就要正式开始啦!

我们曾接触过一些其他的深度学习框架,它们大多会涉及一个基本概念,就是 Tensor。何为 Tensor 呢?中文叫作张量,它是 PyTorch 中最基本的数据类型。

Tensor 之于 PyTorch,就好比 Array 之于 NumPy。零维张量就是数字或者标量,一维张量就是向量,二维或者更高维就是矩阵。不管是自然语言处理还是图片处理,都需要把输入信息转化为高维数字矩阵的形式,张量可以说起到了很大的作用。

(张量设计图)

除了张量外,作者还介绍了自动微分(Autograd),它是 PyTorch 进行神经网络优化的核心。让 PyTorch 自动为我们计算微分,这样你在构建自己的函数用于 backward 时,就无需再手动求导了。

基础篇还介绍了一些深度学习的基础知识,这里有你熟悉的线性回归、非线性回归以及逻辑回归。多元分类、反向传播、卷积神经网络等也有涉及。还有两个实现手写体自动识别器的操作给你练手。


实战篇


实战篇介绍了一些实际的操作方法。假如,我们想做一个小猫识别系统,但是只拥有少量的“小猫标注图片数据”和大量的“小狗标注图片数据”。要怎么办?
你可以先利用大量的小狗图片对卷积神经网络进行训练。由于猫和狗非常相似,所以只要拿少量的小猫图片对该卷积神经网络的全连接层行微调,就可以得到一个非常好用的小猫识别系统。是不是很腻害。

早在 2014 年,Goodfellow 就提出了生成对抗网络。2016 年起,关于生成对抗网络的论文数量呈指数型增长。有热心人士就在 GitHub 上列出了所有生成对抗网络模型的变体,取名为“生成对抗网络的动物园”(The GAN Zoo)。目前该“动物园”一共列出了 503 种不同的生成对抗网络模型及其变体。

(生成对抗网络论文发表数量统计)

我们可以用生成对抗网络做一些有趣的、接近真实的东西,比如让机器自己产生一幅画、一段文字,或者让机器根据我们的输入条件生成一些东西,可以输入一张图片后输出一段文字描述,或者是输入一段男性的录音后输出一段女性的录音等。

比如,生成一张二次元的头像送给男/女朋友。不过具体步骤就等你自己去探秘啦。以下这些是我帮你收集好的小姐姐们,喜欢的话,拿去用!

不喜欢二次元?没关系!卷积神经网络还可以将一张图片的风格迁移到另外一张图片上,这样我就可以拥有梵高的《星月夜》了~

Boom!

突然感觉有点赞呢!

除此之外,实战篇还介绍了深度强化模型,以及序列转序列模型。通过序列转序列模型,作者利用 PyTorch 构造了一个神经翻译机,即将神经网络运用在文本翻译中。

因为一般的神经翻译机用的都是序列转序列(seq2seq)模型,神经翻译机会比以前非神经网络的传统算法的准确率高很多。相信会了这个之后,机器翻译再也不是用来搞笑的了。

(截图来自:谷歌翻译)


高级篇


掌握前两篇的内容之后,作者开始介绍一些 PyTorch 的高级用法。当然,这部分有人需要,有人还需持续修炼之后才会需要。不管怎么样,能学到这里的人,都应该给自己点奖励。

这部分作者分别从四个方面说起,分别是:PyTorch 扩展、PyTorch 模型迁移、Pytorch 可视化以及 Pytorch 的并行计算。

PyTorch 扩展中,作者除了介绍两种神经网络的自定义方法外,还介绍了如何将 PyTorch 模型部署到 C++ 环境下以满足在生产环境下,程序需要高性能、低延迟的要求。

PyTorch 模型迁移这部分中,作者讲解了如何使用 ONNX 将 PyTorch 模型迁移至 Caffe2,以及迁移至 Core ML。

(ONNX 即开放式神经网络交换,是早前微软和 Facebook 为了解决各种深度学习框架之间的模型迁移问题,共同发布的一个解决方案。如今,PyTorch、Caffe2、Microsoft Cognitive Toolkit 及 MXNet 等框架已经可以支持 ONNX,而 TensorFlow、Core ML 等其他框架虽然还没有官方支持 ONNX,但 ONNX 为它们提供了相应的转换器。)

(ONNX 生态圈)

PyTorch 可视化这部分,教你通过使用 Tensorboard 和 Visdom 实现对 PyTorch 的可视化。同时还介绍了一个通用的神经网络可视化工具 Netron。

(visdom 的数据可视化结果)

为了提高训练模型的效率,在实际生产和运用中大部分人都会采用多个 GPU 并行的方式对模型进行训练。PyTorch 则为我们提供了方便的函数,可以自如地创建多个进程或者同时使用多个 GPU 训练模型。最后这部分主要介绍的就是如何将 PyTorch 在多进程、多 CPU 下进行运算。

(多 GPU 训练示意图)

以上呢,就是阿华这本秘笈的主要内容。通篇看下来,作者真的非常了解正在入门 PyTorch 的小伙伴们的痛苦和需求,所以他选择了更适合初学者的思路与讲解方式,基本上是手把手在教了。

而且书中也不乏一些高级技能为已经入门的小伙伴做好进阶的准备。全书 233 页,读起来没啥压力。如果你愿意一步步跟着操作,那么,你会对 PyTorch 有一个全新的认识。

从零到一

真正实现 PyTorch 深度学习入门


(扫一扫,抱回家)
《PyTorch深度学习入门》

作者:曾芃壹

本书用浅显易懂的语言,图文并貌地讲解了深度学习的基础知识,从如何挑选硬件到神经网络的初步搭建,再到实现图片识别、文本翻译、强化学习、生成对抗网络等多个目前最流行的深度学习应用。书中基于目前流行的 PyTorch 框架,运用 Python 语言实现了各种深度学习的应用程序,让理论和实践紧密结合。 

如此具有吸引力的图书,究竟出自何人之手,容我介绍下这位高颜值学霸曾芃壹老师。他在简书上有多篇 PyTorch 文章,阅读量 10万+,深受读者喜爱。
作者简介

曾芃壹,现为中山大学数据科学与计算机学院在读硕士,主要研究兴趣有深度学习、语音识别、推荐系统、自动犯罪侦查等。熟悉 C、C++、Java、Python 等多种程序设计语言,Flask 建站技术以及 PyTorch、TensorFlow 深度学习框架。

作者简书地址:
http://www.jianshu.com/u/5e2b32ff79
专业书评

目前 PyTorch 发展迅猛,已经成为众多研究人员和开发者的深度学习首选框架。本书涵盖了深度学习的基础理论、多个不同应用场景的实战及生产环境下的一些技巧,理论与实战相结合,深入浅出,是深度学习初学者的不错选择。

—— 张海超,NLP 算法工程师


学习的意义在于学以致用,这是一本贴近实战、简单易懂的深度学习入门书,如果你想快速入门深度学习,应该从本书开始。

—— 赵丹,腾讯高级工程师


机器学习作为时下比较热门的技术之一,已经被广泛运用于各个领域。这本书不仅系统讲解了机器学习框架 PyTorch 的用法,还介绍了一些常用机器学习算法的原理,文字简练清晰,代码浅显易懂,几乎可以做到“开箱即用”。无论你只是想简单了解机器学习还是想深入学习 PyTorch,这本书都非常值得阅读。

—— 邹方达,Web 前端工程师
怎么样心动不?为了未来的男/女朋友,这项技能,我可学定喽!

●●●

文末畅聊

小伙伴留言聊聊你用过的那些框架们(深度学习的、非深度学习的都可),用着感觉可还行?也可以说说自己最喜欢的框架,它的哪些优点打动了你。精选留言选出 5 位获得《PyTorch深度学习入门》一本,活动截至2019.10.18。


推荐阅读:

后悔没早知道这些Python特性

9本新书上市

谁说数学不好,就不能成为编程大佬


☟ 一键试读
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47157
 
448 次点击