PyTorch 官方中文教程包含 60 分钟快速入门教程,强化教程,计算机视觉,自然语言处理,生成对抗网络,强化学习!

官方教程包含了 PyTorch 介绍,安装教程; 60 分钟快速入门教程,可以迅速从小白阶段完成一个分类器模型;计算机视觉常用模型,方便基于自己的数据进行调整,不再需要从头开始写;自然语言处理模型,聊天机器人,文本生成等生动有趣的项目。

总而言之: 如果你想了解一下 PyTorch,可以看介绍部分。

如果你想快速入门 PyTorch,可以看 60 分钟快速入门。

如果你想解决计算机视觉问题,可以看计算机视觉部分。

如果你想解决自然语言处理问题,可以看 NLP 部分。

后续会更新强化学习和生成对抗网络部分内容。

作者:磐创 AI pytorch 翻译小组: News & Panchuang

PyTorch 入门教程:http://pytorch123.com/

第一章:PyTorch 之简介与下载
1.PyTorch 简介
2.PyTorch 环境搭建
第二章:PyTorch 之 60min 入门
1.PyTorch 入门
2.PyTorch 自动微分
3.PyTorch 神经网络
4.PyTorch 图像分类器
5.PyTorch 数据并行处理
第三章:PyTorch 之入门强化
1.数据加载和处理
2.PyTorch 小试牛刀
3.迁移学习
4.混合前端的 seq2seq 模型部署
5.保存和加载模型
第四章:PyTorch 之图像篇
1.微调基于 torchvision 0.3 的目标检测模型
2.微调 TorchVision 模型
3.空间变换器网络
4.使用 PyTorch 进行 Neural-Transfer
5.生成对抗示例
6.使用 ONNX 将模型转移至 Caffe2 和移动端
第五章:PyTorch 之文本篇
1.聊天机器人教程
2.使用字符级 RNN 生成名字
3.使用字符级 RNN 进行名字分类
4.在深度学习和 NLP 中使用 Pytorch
5.使用 Sequence2Sequence 网络和注意力进行翻译
第六章:PyTorch 之生成对抗网络
第七章:PyTorch 之强化学习
GitHub 仓库,欢迎 Star,Fork
https://github.com/fendouai/PyTorchDocs

PyTorch 60 分钟入门教程:自动微分

autograd 包是 PyTorch 中所有神经网络的核心。首先让我们简要地介绍它,然后我们将会去训练我们的第一个神经网络。该 autograd 软件包为 Tensors 上的所有操作提供自动微分。它是一个由运行定义的框架,这意味着以代码运行方式定义你的后向传播,并且每次迭代都可以不同。我们从 tensor 和 gradients 来举一些例子。

1、TENSOR

torch.Tensor 是包的核心类。如果将其属性 .requires_grad 设置为 True,则会开始跟踪针对 tensor 的所有操作。完成计算后,您可以调用 .backward() 来自动计算所有梯度。该张量的梯度将累积到 .grad 属性中。

要停止 tensor 历史记录的跟踪,您可以调用 .detach(),它将其与计算历史记录分离,并防止将来的计算被跟踪。

要停止跟踪历史记录(和使用内存),您还可以将代码块使用 with torch.no_grad(): 包装起来。在评估模型时,这是特别有用,因为模型在训练阶段具有 requires_grad = True 的可训练参数有利于调参,但在评估阶段我们不需要梯度。

还有一个类对于 autograd 实现非常重要那就是 Function。Tensor 和 Function 互相连接并构建一个非循环图,它保存整个完整的计算过程的历史信息。每个张量都有一个 .grad_fn 属性保存着创建了张量的 Function 的引用,(如果用户自己创建张量,则g rad_fn 是 None )。

如果你想计算导数,你可以调用 Tensor.backward()。如果 Tensor 是标量(即它包含一个元素数据),则不需要指定任何参数backward(),但是如果它有更多元素,则需要指定一个gradient 参数来指定张量的形状。

import torch

创建一个张量,设置 requires_grad=True 来跟踪与它相关的计算

x = torch.ones(2, 2, requires_grad=True)
print(x)

输出:

tensor([[1., 1.],
        [1., 1.]], requires_grad=True)

针对张量做一个操作

y = x + 2
print(y)

输出:

tensor([[3., 3.],
        [3., 3.]], grad_fn=<AddBackward0>)

y 作为操作的结果被创建,所以它有 grad_fn

print(y.grad_fn)

输出:

<AddBackward0 object at 0x7fe1db427470>

针对 y 做更多的操作:

z = y * y * 3
out = z.mean()

print(z, out)

输出:

tensor([[27., 27.],
        [27., 27.]], grad_fn=<MulBackward0>) tensor(27., grad_fn=<MeanBackward0>)

.requires_grad_( ... ) 会改变张量的 requires_grad 标记。输入的标记默认为  False ,如果没有提供相应的参数。

a = torch.randn(2, 2)
a = ((a * 3) / (a - 1))
print(a.requires_grad)
a.requires_grad_(True)
print(a.requires_grad)
b = (a * a).sum()
print(b.grad_fn)

输出:

False
True
<SumBackward0 object at 0x7fe1db427dd8>

梯度:

我们现在后向传播,因为输出包含了一个标量,out.backward() 等同于out.backward(torch.tensor(1.))

out.backward()

打印梯度  d(out)/dx

print(x.grad)
 输出:
tensor([[4.5000, 4.5000],
        [4.5000, 4.5000]])

 

原理解释:

现在让我们看一个雅可比向量积的例子:

x = torch.randn(3, requires_grad=True)

y = x * 2
while y.data.norm() < 1000:
    y = y * 2

print(y)

输出:

tensor([ -444.6791,   762.9810, -1690.0941], grad_fn=<MulBackward0>)

 

现在在这种情况下,y 不再是一个标量。torch.autograd 不能够直接计算整个雅可比,但是如果我们只想要雅可比向量积,只需要简单的传递向量给 backward 作为参数。

v = torch.tensor([0.1, 1.0, 0.0001], dtype=torch.float)
y.backward(v)

print(x.grad)

输出:

tensor([1.0240e+02, 1.0240e+03, 1.0240e-01])

 

你可以通过将代码包裹在 with torch.no_grad(),来停止对从跟踪历史中 的 .requires_grad=True 的张量自动求导。

print(x.requires_grad)
print((x ** 2).requires_grad)

with torch.no_grad():
    print((x ** 2).requires_grad)

输出:

True
True
False

稍后可以阅读:

autograd 和 Function 的文档在: https://pytorch.org/docs/autograd

下载 Python 源代码:

autograd_tutorial.py

下载 Jupyter 源代码:

autograd_tutorial.ipynb

磐创AI-聊天机器人 BotMind 亿级聊天数据,千万级知识库,自研深度学习 NLP 工具集,语音和文本输入,网站微信APP多平台接入。

磐创AI-聊天机器人 BotMind 亿级聊天数据,千万级知识库,自研深度学习 NLP 工具集,语音和文本输入,网站微信APP多平台接入。

深圳市磐创网络科技有限公司成立于2017年2月,公司主营业务是智能客服系统,聊天机器人。

我们的宗旨是:让人工智能为更多的企业服务。磐创网络致力于打造领先的人工智能行业解决方案,帮助企业降低成本,提高用户体验。

磐创网络智能客服产品先后和多家公司建立了合作关系,包括深圳市一满乐有限公司、北京市七月科技有限公司、深圳市快学教育有限公司等。近期,我们也将推出智能客服的免费版系统,企业只需要导入知识库,就可以生成自己的智能客服,并支持API、微信、网站等多种接入方式。欢迎更多的企业联系我们,免费试用。

BotMind 是人工智能时代的人机交互方式,基于人工智能 + 自然语言处理 + 大数据 创造出全新的人机交互体验。

应用场景:智能机器人,智能机器人的核心之一是让其拥有与人类沟通交流的能力,BotMind就是机器人的大脑。基于BotMind可以打造出聊天机器人、早教机器人、陪护机器人等。智能家居,通过BotMind将家居生活相关的设施进行统一管理,作为人和家居设施沟通的媒介,打造全新的生活体验。智能设备,基于BotMind的智能音箱,在获得全新交互体验的同时为用户增添了更多的乐趣。除了智能音箱,BotMind可以接入任何可以有人机交互的设备。虚拟人物,虚拟人物可以作为虚拟的品牌形象,虚拟化的游戏人物等。BotMind能够赋予这些虚拟人物部分真人的属性,让虚拟人物更加真实。私人助理,基于BotMInd打造的私人助理,能够辅助日程管理、事件提醒、购票、订餐以及娱乐等。

磐小妹,微信公众号搜索磐小妹,或者扫描一下二维码即可体验。

主要功能有:打招呼,天气查询,音乐播放,美食推荐;支持语音和文本输入。

磐创AI开发的具有自主知识产权的NLP工具集CNLP,在分词、词性标注、实体识别等任务的评测中均具有较高的准确率。在自然语言处理方面,磐创团队拥有扎实的基本功。磐创团队拥有多名具有丰富的人工智能算法研发和应用经验的工程师,具有图像识别、舆情分析、异常检测以及智能客服等相关项目经验。磐创AI从事了多年自然语言处理相关的工作,积累了大量的数据。磐创的智能客服系统在为用户提供优质服务的同时,通过与客户的合作,经过授权获得了大量高质量的数据。通过不断积累各行各业的数据,BotMind的知识库也在不断扩充,其能力也得到了大幅的提升。随着数据的积累,BotMind也会越来越智能。

磐创网络科技还运营有国内第三大 Tensorflow 社区网站( http://panchuang.net/ ),以及知乎专栏 5000 粉丝、微信公众号 20000 粉丝、腾讯云专栏、头条号等线上平台,累计发表技术类文章200余篇,粉丝累计5万左右。此外,磐创AI技术团队还受电子工业出版社、北京邮电出版社、铁路出版社等知名出版社邀约,撰写深度学习专业书籍,与电子工业出版社合作的《Tensorflow从零开始学》将于今年年底上市。

项目合作/产品试用/投资等商务合作,请联系:15622885820。或添加以下微信详细咨询:15622885820。

磐创AI:http://panchuangai.com

Caffe2 + PyTorch = PyTorch 1.0

作者:贾扬清
链接:https://zhuanlan.zhihu.com/p/36353529
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Announcing PyTorch 1.0 for both research and production

The path for taking AI development from research to production has historically involved multiple steps and tools, making it time-intensive and complicated to test new approaches, deploy them, and iterate to improve accuracy and performance. To help accelerate and optimize this process, we’re introducing PyTorch 1.0, the next version of our open source AI framework.

PyTorch 1.0 takes the modular, production-oriented capabilities from Caffe2 and ONNX and combines them with PyTorch’s existing flexible, research-focused design to provide a fast, seamless path from research prototyping to production deployment for a broad range of AI projects. With PyTorch 1.0, AI developers can both experiment rapidly and optimize performance through a hybrid front end that seamlessly transitions between imperative and declarative execution modes. The technology in PyTorch 1.0 has already powered many Facebook products and services at scale, including performing 6 billion text translations per day.

PyTorch 1.0 will be available in beta within the next few months, and will include a family of tools, libraries, pre-trained models, and datasets for each stage of development, enabling the community to quickly create and deploy new AI innovations at scale.

The path from research to production

PyTorch’s imperative front end allows for more rapid prototyping and experimentation through its flexible and productive programming model. The first version of PyTorch launched a little over a year ago, and its speed, productivity, and ability to support cutting-edge AI models such as dynamic graphs quickly made it a popular and important development tool for AI researchers. It has more than 1.1 million downloads and is the second-most cited deep learning framework on arxiv over the last month. For example, UC Berkeley computer scientists put PyTorch’s dynamic graph capabilities to use for their noteworthy CycleGAN image-to-image transform work.

Although the current version of PyTorch has provided great flexibility for AI research and development, performance at production-scale is sometimes a challenge, given its tight coupling to Python. We often need to translate the research code — either training script or trained model — to a graph mode representation in Caffe2 to run at production scale. Caffe2’s graph-based executor allows developers to take advantage of state-of-the-art optimizations like graph transformations, efficient memory reuse, and tight hardware interface integration. The Caffe2 project was launched two years ago to standardize our production AI tooling, and is now running neural networks across Facebook servers and on more than 1 billion phones around the world, spanning eight generations of iPhones and six generations of Android CPU architectures. Today, Caffe2 delivers more than 200 trillion predictions per day across all models, small and large, with optimized production performance.

The migration from PyTorch to Caffe2 to ship to production used to be a manual process, time-intensive, and error-prone. To solve this problem, we partnered with major hardware and software companies to create ONNX (Open Neural Network Exchange), an open format for representing deep learning models. With ONNX, developers can share models among different frameworks, for example, by exporting models built in PyTorch and importing them to Caffe2. At Facebook, this enabled us to have smoother AI research, training and inference with large-scale server and mobile deployment.

We’ve used these tools (PyTorch, Caffe2, and ONNX) to build and deploy Translate, the tool that now runs at scale to power translations for the 48 most commonly used languages on Facebook. In VR, these tools have been critical in deploying new research from Oculus into production to make avatars move more realistically.

However, while this combination of three different tools has been effective, there are still manual steps that are complicated and time-consuming. As such, it didn’t allow us to bring new AI research innovation to production as seamlessly as we would have liked.

Unifying research and production capabilities in one framework

PyTorch 1.0 fuses together immediate and graph execution modes, providing both flexibility for research and performance optimization for production. More specifically, rather than force developers to do an entire code rewrite to optimize or migrate from Python, PyTorch 1.0 provides a hybrid front end enabling you to seamlessly share the majority of code between immediate mode for prototyping and graph execution mode for production.

In addition, ONNX is natively woven into PyTorch 1.0 as the model export format, making models from PyTorch 1.0 interoperable with other AI frameworks. ONNX also serves as the integration interface for accelerated runtimes or hardware-specific libraries. This gives developers full freedom to mix and match the best AI frameworks and tools without having to take on resource-intensive custom engineering. Facebook is committed to supporting new features and functionalities for ONNX, which continues to be a powerful open format as well as an important part of developing with PyTorch 1.0.

Building an end-to-end deep learning system

Along with PyTorch 1.0, we’ll also open-source many of the AI tools we are using at scale today. These include Translate — a PyTorch Language Library — for fast, flexible neural machine translation, as well as the next generation of ELF, a comprehensive game platform for AI reasoning applications. Developers can also take advantage of tools like Glow, a machine learning compiler that accelerates framework performance on different hardware platforms, and Tensor Comprehensions, a tool that automatically generates efficient GPU code from high-level mathematical operations. We have also open-sourced other libraries, such as Detectron, which supports object-detection research, covering both bounding box and object instance segmentation outputs. Visit our AI developer site at facebook.ai/developers for the full list, and learn more about PyTorch on the PyTorch and Caffe2 blogs.

Over the coming months, we’re going to refactor and unify the codebases of both the Caffe2 and PyTorch 0.4 frameworks to deduplicate components and share abstractions. The result will be a unified framework that supports efficient graph-mode execution with profiling, mobile deployment, extensive vendor integrations, and more. As with other open AI initiatives like ONNX, we’re also partnering with other companies and the community to give more developers these accelerated research to production capabilities. To start, Microsoft plans to support PyTorch 1.0 in their Azure cloud and developer offerings, including Azure Machine Learning services and Data Science Virtual Machines, and Amazon Web Services currently supports the latest version of PyTorch, optimized for P3 GPU instances, and plans to make PyTorch 1.0 available shortly after release in their cloud offerings, including its Deep Learning AMI (Amazon Machine Image).

This is just the beginning, as we look to create and share better AI programming models, interfaces and automatic optimizations. AI is a foundational technology at Facebook today, making existing products better and powering entirely new experiences. By opening up our work via papers, code, and models, we can work with all AI researchers and practitioners to advance the state of the art faster and to help apply these techniques in new ways.

PyTorch 1.0现身(Logo也换了),围棋AI开源

F8开发者大会第二天,Facebook亮出了一系列AI大动作。

Caffe2和PyTorch合体事件有了清晰的发展方向,同样服务于深度学习开发者的ONNX也宣布支持更多的框架。

另外,Facebook开源了视频理解、自然语言处理的模型,开源了围棋AI ELF OpenGo,还展示了一个打星际的AI。

PyTorch

v0.4.0正式版发布没几天,Facebook在F8开发者大会第二天宣布将发布PyTorch 1.0,还提前展示了这款新框架的特性。

这个框架,还换了LOGO:

深度学习框架Caffe2的作者贾扬清,在知乎上将这一版本的发布总结为Caffe2 + PyTorch = PyTorch 1.0。

也就是将原本两款框架面向研究的和面向生产的特性结合了起来。

Facebook介绍说,PyTorch 1.0结合了Caffe2和ONNX模块化、面向生产的特性,和PyTorch自身灵活、面向研究的特性结合起来,为广泛的AI项目提供了一个从科研原型到生产部署的快速、无缝途径,让用户可以快速实验,通过一个能在强制执行模式和声明执行模式之间无缝切花的混合前端优化性能。

除了将研究和生产特性结合起来,PyTorch 1.0还将ONNX(开放神经网络交换)包含进来。ONNX是Facebook去年联合多家软硬件公司发布的神经网络模型转换协议,现在,它新增了对苹果的Core ML、百度PaddlePaddle、高通SNPE的支持,再加上原本支持的MXNet、Caffe2、PyTorch、TensorFlow、CNTK等框架,实现了神经网络模型在各种主流框架之间的转换。

PyTorch 1.0 beta版将在今年夏天和用户见面。

不过,Facebook内部已经用上了。官方称,Facebook多款产品和服务都在大规模应用这个新框架,它每天要处理60亿次文本翻译任务。

PyTorch最初亮相于1年多以前,Facebook的另一款深度学习框架Caffe2,则在去年的F8大会上正式发布。

不过今年4月,Caffe2已经宣布全部代码并入PyTorch。接下来的几个月里,两款框架原本的组件将深度结合,成为一个单独的软件包。

就在上周,PyTorch发布了v0.4.0版本,将Tensors(张量)和Variables(变量)合并,新增了零维张量,还开始了对Windows系统的官方支持。

展示PyTorch 1.0的同时,Facebook还开源了一部分研究成果。比如用于视频理解的ResNext3D模型将于6月发布,视频行为识别模型Res 2+1今天就已经开源,PyTorch中的自然语言理解库Translate也将开源。

发布了这么多资源和工具,去哪找呢?Facebook还为旗下所有的AI资源推出了一个网站:

https://facebook.ai/developers

围棋AI开源下载

在F8大会上,还开源了一个围棋AI:ELF OpenGo。

这个AI是Facebook团队对DeepMind技术的一个重现,最近他们选择与四名排名世界前30的人类高手对战,取得了14-0的胜利。

和AlphaGo一样,这个AI的重点也并不只是下围棋,而是想要更好的解决问题。现在ELF OpenGo已经可以开源下载。

对此,田渊栋在知乎上有更详细的解答:

我们最近改进了ELF框架,并且在上面实现了DeepMind的AlphaGoZero及AlphaZero的算法。用两千块GPU训练约两到三周后得到的围棋AI,基本上超过了强职业的水平。我们和韩国棋院合作进行了一次测试,给这个AI单卡每步50秒搜索时间(每步搜索8万个局面),给人类棋手任意长时间思考,结果AI以14比0完胜。参与测试的棋手包括金志锡,申真谞,朴永训及崔哲瀚,在这里我们非常感谢他们的合作,大家都很尽力,一些棋局下了三四个小时极其精彩。应棋手们的要求,这14局棋谱中的12局不久将公开。

另外我们也和现在著名的LeelaZero比较了下。我们采用了LeelaZero除ponder外的缺省配置(约一分钟一步),及4月25日的公开权重(192×15, 158603eb),结果我们的AI以200比0获胜。在此我们非常感谢Leela团队的工作,对于他们的开源精神,我们表示由衷的敬意。

这次我们将训练代码,测试代码及训练出来的模型(224×20)全部公开,首要目的是贯彻我们一直以来坚持的开源方针,让AI为全世界服务。其次是对于AlphaGoZero及AlphaZero这样非常优秀的算法,我们想要提供一个可重复的参考实现,让全球的研究者们能在这上面继续改进,充分发挥自己的创造力。最后是借此机会推广一下我们的ELF平台和PyTorch深度学习框架,希望更多的人能使用和完善它。

感谢大家的支持!

田渊栋,龚渠成&马子嫯(Jerry Ma), Shubho Sengupta, 陈卓远,Larry Zitnick

ELF OpenGo代码及模型的地址:

https://github.com/pytorch/ELF

其他

在F8大会上,还展示了一个可以打《星际争霸》的AI,Facebook也计划随后开源这一项目。星际争霸和围棋一直也都是Facebook团队研究的方向。

还有一项突破研究。基于35亿张用户已打标签(17000个)的公开图像,Facebook成功训练了一个图像识别系统,这比之前只能用手动打标签的5000万张图片训练相比,提高了系统的识别能力,在ImageNet上获得了创纪录的高分(准确率85.4%)。

更多信息,可以参考这个页面:

https://code.facebook.com/posts/1700437286678763/

此外,F8大会上还展示了AR和VR方面的进步。

Facebook已经创建了一个原型系统,可以生成效果惊人的三围重建画面。下面这个视频,展示了正常的视频与3D重建画面的比较,几乎难以分辨左右哪个画面为真。(友情提示:左边露出操作员脚部的是真实世界)

原文链接:http://www.sohu.com/a/230230002_610300