这不,又一个程序员为爱变身灵魂画手,看得我都想学画画了。
阿华是幸运的,因为他找到了对的方法,事半功倍,最终有情人终成眷属。这也得益于 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 有一个全新的认识。
标签:ONNX,模型,最美,神经网络,张量,PyTorch,TensorFlow,我用,生成 From: https://blog.51cto.com/u_15767091/6547556