PyTorch 之接下来是什么

Posted by 徐志平 on July 29, 2018

第九章 接下来是什么?

你做到了!感谢您阅读PyTorch的深度学习。您应该对使用PyTorch构建深度学习应用程序所需的核心机制和应用程序接口(API)有深入的了解。到目前为止,您应该习惯使用所有基本模块来支持大多数现代深度学习算法。

接下来是什么?

在本章中,我们将总结我们在本书中学到的内容,并进一步探索不同的项目和资源。这些项目和资源将帮助您进一步了解最新研究的最新进展。

概观

本节提供了我们在本书中学到的内容的鸟瞰图:

  • 人工智能(AI),机器学习的历史 - 硬件和算法的各种改进如何在不同应用程序的深度学习实施中取得巨大成功。
  • 如何使用PyTorch的各种构建块(如变量,张量和nn.module)来开发神经网络。
  • 了解训练神经网络所涉及的不同过程,例如用于数据准备的PyTorch数据集,用于批量张量的数据加载器,用于创建网络架构的torch.nn包,以及使用PyTorch损失函数和优化器。
  • 我们看到了不同类型的机器学习问题以及挑战,例如过度拟合和欠拟合。我们还经历了不同的技术,例如数据增加,添加丢失,以及使用批量标准化来防止过度拟合。
  • 我们学习了卷积神经网络(CNN)的不同构建模块,并学习了转移学习,这有助于我们使用预训练模型。我们还看到了一些技术,例如使用预先复杂的特征,这有助于减少训练模型所需的时间。
  • 我们了解了嵌入词以及如何将它们用于文本分类问题。我们还探讨了如何使用预训练的词嵌入。我们探索了递归神经网络(RNN),其变体如长短期记忆(LSTM),以及如何将它们用于文本分类问题。
  • 我们探索了生成模型,并了解了如何使用PyTorch创建艺术风格迁移,以及如何使用PyTorch创建新的CIFAR图像
  • 生成对抗网络(GAN)。我们还探索了语言建模技术,可用于生成新文本或创建特定于域的嵌入。
  • 我们探索了现代架构,例如ResNet,Inception,DenseNet和编码 - 解码器架构。我们还看到了这些模型如何用于转移学习。我们还通过组合所有这些模型构建了一个集合模型。

探索有趣的想法

我们在本书中学到的大多数概念构成了深度学习的现代应用程序的基础。 在本节中,我们将看看我们可以做的与计算机视觉和自然语言处理(NLP)相关的不同有趣项目。

物体检测

我们在本书中看到的所有示例都可以帮助您检测给定图像是否为(猫)或(狗)。 但是,要解决现实世界中的一些问题,您可能需要识别图像中的不同对象,如下所示:

此图显示了对象检测算法的输出,其中算法检测诸如漂亮的狗和猫之类的对象。 正如有现成的图像分类算法一样,有许多令人惊叹的算法可以帮助构建对象识别系统。 以下列出了一些重要的算法和提到它们的论文:

  • 单次多盒检测器(SSD)https://arxiv.org/abs/1512.02325
  • 更快的RCNN https://arxiv.org/abs/1505.01497
  • YOLO2 https://arxiv.org/abs/1512.08242

图像分割

我们假设您正在从建筑物的露台上阅读本书。 你在周围看到了什么? 你能勾勒出你所看到的内容吗? 如果你是一个优秀的艺术家,不像我,那么你可能会画出几个建筑物,树木,鸟类以及一些周围有趣的东西。 图像分割算法试图捕捉类似的东西。 给定图像,它们为每个像素生成预测,识别每个像素属于哪个类。 下图显示了图像分割算法识别的内容:

您可能想要探索用于图像分割的一些重要算法是:

  • R-CNN https://arxiv.org/abs/1311.2524
  • Fast R-CNN https://arxiv.org/abs/1504.08083
  • Faster R-CNN https://arxiv.org/abs/1506.01497
  • Mask R-CNN https://arxiv.org/abs/1703.06870

PyTorch中的OpenNMT

开源神经机器翻译(OpenNMT)(https://github.com/OpenNMT/OpenNMT-py )项目有助于构建由编码器 - 解码器架构驱动的许多应用程序。您可以构建的一些应用程序是翻译系统,文本摘要和图像到文本。

Alien NLP

Alien NLP是一个基于PyTorch构建的开源项目,它使我们能够更轻松地完成许多NLP任务。有一个演示页面(http://demo.aiiennip.org/machine-comprehension ),你应该看看,以了解你可以使用Alien NLP构建什么。

fast.ai - 使神经网再次变得普通

我最喜欢学习深度学习的地方之一,也是一个伟大的灵感之地,是一个MOOC,其唯一的动机是让所有人都可以深入学习,由两位来自fast.ai(http://www.fast.ai /),Jeremy Howard和Rachel Thomas。对于他们课程的新版本,他们在PyTorch之上构建了一个令人难以置信的框架(https://github.com/fastai/fastai ),使构建应用程序变得更加容易和快捷。如果你还没有开始他们的课程,我强烈建议你启动它。探索如何构建fast.ai框架将让您深入了解许多强大的技术。

开放式神经网络交换

开放式神经网络交换(ONNX)(http://onnx.ai/ )是迈向开放式生态系统的第一步,它使您能够随着项目的发展选择合适的工具。 ONNX为深度学习模型提供开源格式。 它定义了可扩展的计算图模型,以及内置运算符和标准数据类型的定义。 Caffe2,PyTorch,Microsoft Cognitive Toolkit,Apache MXNet和其他工具正在开发ONNX支持。 该项目可以帮助生成PyTorch模型。

如何让自己更新

社交媒体平台,尤其是Twitter,可以帮助您在现场保持最新状态。 你可以跟随很多人。 如果您不确定从哪里开始,我建议您关注Jeremy Howard(https://twitter.com/jeremyphoward )以及他可能关注的任何有趣的人。 通过这样做,你将迫使Twitter推荐系统为你工作。

您需要关注的另一个重要的Twitter帐户是PyTorch(https://twitter.com/PyTorch )。 PyTorch背后的人们分享了一些很棒的内容。

如果您正在寻找研究论文,那么请查看arxiv-sanity(http://www.arxiv-sanity.com/ ),其中许多聪明的研究人员发表他们的论文。

学习PyTorch的更多资源是它的教程(http://pytorch.org/tutorials/ ),它的源代码(https://github.com/pytorch/pytorch )及其文档(http://pytorch.org/docs/0.3.0/ )。

小结

深度学习和PyTorch还有很多未提及的内容。 PyTorch是一个相对较新的框架,在撰写本章时,已经有一年了。 学习和探索还有很多,所以快乐的学习。 祝一切顺利。