专栏名称: AI科技大本营
迎来到AI科技大本营。这里汇集了优秀的AI学习者,技术大咖和产业领袖;提供接地气的实战课程。在这里和优秀的人一起成长。
目录
相关文章推荐
平安芜湖  ·  警惕AI换脸拐骗! ·  昨天  
平安芜湖  ·  警惕AI换脸拐骗! ·  昨天  
爱可可-爱生活  ·  【Copier-uv:为Python项目提供 ... ·  昨天  
爱可可-爱生活  ·  数据量不是问题,选对数据才是关键 ... ·  3 天前  
黄建同学  ·  AI Agent的评估包括↓一、核心能力• ... ·  3 天前  
51好读  ›  专栏  ›  AI科技大本营

漫画:我用深度学习框架画下女朋友最美的脸

AI科技大本营  · 公众号  · AI  · 2019-11-01 19:31

正文

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


阿华是幸运的,因为他找到了对的方法,事半功倍,最终有情人终成眷属。这也得益于 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 深度学习入门







请到「今天看啥」查看全文