PyTorch入门教程中文版
教程介绍
PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。它主要由Facebook的人工智能小组开发,不仅能够实现强大的GPU加速,同时还支持动态神经网络,这一点是现在很多主流框架如TensorFlow都不支持的。 PyTorch提供了两个高级功能:具有强大的GPU加速的张量计算(如Numpy) 包含自动求导系统的深度神经网络
除了Facebook之外,Twitter、GMU和Salesforce等机构都采用了PyTorch。
官方教程包含了 PyTorch 介绍,安装教程;60分钟快速入门教程,可以迅速从小白阶段完成一个分类器模型;计算机视觉常用模型,方便基于自己的数据进行调整,不再需要从头开始写;自然语言处理模型,聊天机器人,文本生成等生动有趣的项目。
PyTorch简介与下载
PyTorch简介
要介绍PyTorch之前,不得不说一下Torch。Torch是一个有大量机器学习算法支持的科学计算框架,是一个与Numpy类似的张量(Tensor) 操作库,其特点是特别灵活,但因其采用了小众的编程语言是Lua,所以流行度不高,这也就有了PyTorch的出现。所以其实Torch是 PyTorch的前身,它们的底层语言相同,只是使用了不同的上层包装语言。
PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。它主要由Facebookd的人工智能小组开发,不仅能够实现强大的GPU加速,同时还支持动态神经网络,这一点是现在很多主流框架如TensorFlow都不支持的。 PyTorch提供了两个高级功能:具有强大的GPU加速的张量计算(如Numpy)包含自动求导系统的深度神经网络
除了Facebook之外,Twitter、GMU和Salesforce等机构都采用了PyTorch。
TensorFlow和Caffe都是命令式的编程语言,而且是静态的,首先必须构建一个神经网络,然后一次又一次使用相同的结构,如果想要改变网络的结构,就必须从头开始。但是对于PyTorch,通过反向求导技术,可以让你零延迟地任意改变神经网络的行为,而且其实现速度快。正是这一灵活性是PyTorch对比TensorFlow的最大优势。
另外,PyTorch的代码对比TensorFlow而言,更加简洁直观,底层代码也更容易看懂,这对于使用它的人来说理解底层肯定是一件令人激动的事。
所以,总结一下PyTorch的优点:支持GPU 灵活,支持动态神经网络底层代码易于理解命令式体验自定义扩展
当然,现今任何一个深度学习框架都有其缺点,PyTorch也不例外,对比TensorFlow,其全面性处于劣势,目前PyTorch还不支持快速傅里叶沿维翻转张量和检查无穷与非数值张量;针对移动端、嵌入式部署以及高性能服务器端的部署其性能表现有待提升;其次因为这个框架较新,使得它的社区没有那么强大,缺少文档说明。
PyTorch下载安装
前提
默认已经安装好python环境和Jupyter(或其他编译工具)。
安装torch
安装torchvision
安装和使用过程比较简单,如果有其他报错,可以自行查阅网上踩坑博客解决。
说明
上述PyTorch下载安装教程原文是用Anaconda的方式安装的,个人感觉冗余太多,附教程链接:
PyTorch环境搭建
PyTorch入门
PyTorch 是一个基于 Python 的科学计算包,主要定位两类人群:NumPy 的替代品,可以利用 GPU 的性能进行计算深度学习研究平台拥有足够的灵活性和速度
张量 Tensors
Tensors 类似于 NumPy 的 ndarrays ,同时 Tensors 可以使用 GPU 进行计算。导入 torch 模块
构造一个5×3的矩阵,不做初始化
输出:
构造一个5×3的随机初始化矩阵
输出:
构造一个元素全为0,数据类型为long的矩阵
输出:
直接使用数据 [5.5, 3] 构造一个张量
输出:
根据已有的tensor再创建一个tensor
输出:
获取tensor的维度信息
输出:
【注意:是一个元组,所以它支持左右的元组操作。】
张量的操作
张量的加法
加法方式1:
输出:
加法方式2:
输出:
加法方式3:提供一个tensor作为输出参数
输出:
加法方式4:
输出:
【注意:任何使张量会发生变化的操作都有一个前缀 '_'】
例如:, , 将会改变 .
张量的索引
使用与标准的 NumPy 类似的索引操作
输出:
张量的大小形状
改变张量的大小形状
输出:
张量的元素值
当tensor中只有一个元素时,可以使用来获取这个元素的值获取单元素张量的值
输出:
tensor与numpy的转换
tensor转换为numpy
tensor转换为numpy
输出:
输出:
numpy转换为tensor
numpy转换为tensor
输出:
输出:
CUDA程序框架
程序构架分为两部分:和。一般而言,指的是,指的是。在程序构架中,主程序还是由来执行,而当遇到数据并行处理的部分, 就会将程序编译成能执行的程序,并传送到。