# 深度学习框架Pytorch

深度学习框架能够让使用者更快速地构建深度学习模型，目前有众多深度学习框架用于学习研究。PyTorch是Facebook团队于2017年初发布的一套深度学习开源框架，虽然晚于TensorFlow等框架，但自发布之日起，其关注度就在不断上升，是当今深度学习领域中最热门的框架之一，其简洁且高效快速的框架设计、符合人类思维习惯的设计方式等特点使其非常适合研究学习及实验。

相比于其他框架，PyTorch有如下特点：

- 灵活强大的接口

包括eager execution和graph execution模式之间无缝转换的混合前端、改进的分布式训练、用于高性能研究的纯C++前端，以及与云平台的深度集成。

- 丰富的课程资源

Udacity和Facebook已经上线了一门新课程（Introduce to Deep Learning with PyTorch）并推出了PyTorch挑战赛（PyTorch Challenge Program），PyTorch的相关完整课程可在Udacity网站上免费获取。除在线教育课程之外，fast.AI等组织还提供软件库，支持开发者使用PyTorch构建神经网络。

- 更多的项目扩展

基于PyTorch开发的典型拓展有：

1. Horovod：分布式训练框架，使开发人员能够轻松地使用单个GPU程序，并快速在多个GPU上训练。
2. PyTorch Geometry：PyTorch的几何计算机视觉库，提供一组路径和可区分的模块。
3. TensorBoardX：一个将PyTorch模型记录到TensorBoard的模块，允许开发者使用可视化工具训练模型。


此外，Facebook内部团队还构建并开源了多个PyTorch项目，如Translate（用于训练基于Facebook机器翻译系统的序列到序列模型的库）。

- 支持更多的云平台

为了使PyTorch更加易于获取且对用户友好，PyTorch团队继续深化与云平台和云服务的合作，如AWS、谷歌云平台、微软Azure，开发者可以在此类云平台上训练、管理和部署PyTorch模型。


PyTorch可用于构建深度神经网络和执行张量计算，其主要的功能有：拥有GPU张量，该张量可以通过GPU加速，达到在短时间内处理大数据的要求；支持动态神经网络，可逐层对神经网络进行修改，并且神经网络具备自动求导的功能。本书后续内容均是基于PyTorch框架实现。
