PyTorch
记录 PyTorch 学习过程
wohu007
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PyTorch 笔记(20)— torchvision 的 datasets、transforms 数据预览和加载、模型搭建(torch.nn.Conv2d/MaxPool2d/Dropout)
计算机视觉是深度学习中最重要的一类应用,为了方便研究者使用,PyTorch 团队专门开发了一个视觉工具包torchvision,这个包独立于 PyTorch,需通过 pip instal torchvision 安装。torchvision 主要包含三部分:models:提供深度学习中各种经典网络的网络结构以及预训练好的模型,包括 AlexNet 、VGG 系列、ResNet 系列、Inception 系列等;datasets: 提供常用的数据集加载,设计上都是继承 torch.utils.data原创 2020-08-07 23:09:52 · 16549 阅读 · 8 评论 -
PyTorch 笔记(19)— Tensor 用 GPU 加速
1. Tensor 用 GPU 加速Tensor 可以被移动到任何设备中,例如 GPU 以加速运算,使用 .to 方法即可。x = torch.randn(1)if torch.cuda.is_available(): device = torch.device("cuda") y = torch.ones_like(x, device=device) # directly create a tensor on GPU x = x.to(devic原创 2020-08-06 22:10:23 · 11046 阅读 · 1 评论 -
PyTorch 笔记(18)— torch.optim 优化器的使用
到目前为止,代码中的神经网络权重的参数优化和更新还没有实现自动化,并且目前使用的优化方法都有固定的学习速率,所以优化函数相对简单,如果我们自己实现一些高级的参数优化算法,则优化函数部分的代码会变得较为复杂。在 PyTorch 的 torch.optim 包中提供了非常多的可实现参数自动优化的类,比如 SGD 、AdaGrad 、RMSProp 、Adam 等,这些类都可以被直接调用,使用起来也非常方便。我们使用自动化的优化函数实现方法对之前的代码进行替换,新的代码如下:import torch as原创 2020-08-05 23:12:37 · 6167 阅读 · 0 评论 -
PyTorch 笔记(17)— torch.nn 包中常用的损失函数(MSELoss 均方误差、L1Loss 平均绝对误差、CrossEntropyLoss 交叉熵误差)
1. torch.nn.MSELosstorch.nn.MSELoss 类使用均方误差函数对损失值进行计算,在定义类的对象时不用传入任何参数,但在使用实例时需要输入两个维度一样的参数方可进行计算。示例如下:import torch as tloss_f = t.nn.MSELoss()x = t.randn(100, 100)y = t.randn(100, 100)loss = loss_f(x, y)print(loss)以上代码首先通过随机方式生成了两个维度都是(100,10原创 2020-08-04 22:50:11 · 5874 阅读 · 0 评论 -
PyTorch 笔记(16)— torch.nn.Sequential、torch.nn.Linear、torch.nn.RelU
PyTorch 中的 torch.nn 包提供了很多与实现神经网络中的具体功能相关的类,这些类涵盖了深度神经网络模型在搭建和参数优化过程中的常用内容,比如神经网络中的卷积层、池化层、全连接层这类层次构造的方法、防止过拟合的参数归一化方法、Dropout 方法,还有激活函数部分的线性激活函数、非线性激活函数相关的方法,等等。下面使用 PyTorch 的 torch.nn 包来简化我们之前的代码,开始部分的代码变化不大,如下所示:import torch as tbatch_n = 100input_原创 2020-08-03 22:34:05 · 16303 阅读 · 3 评论 -
PyTorch 笔记(15)— 分别使用 tensor、autograd、torch.nn 搭建简易神经网络
1. 使用 tensor 搭建神经网络搭建神经网络模型的具体代码如下,这里会将完整的代码分成几部分进行详细介绍,以便于理解。import torch as tbatch_n = 100input_data = 10000hidden_layer = 100output_data = 10batch_n 是在一个批次中输入数据的数量,值是 100,这意味着我们在一个批次中输入 100个数据;input_data 表示 batch_n 包含的数据特征个数,该值是 1000,所以每个数据的数原创 2020-08-01 23:12:54 · 565 阅读 · 0 评论 -
PyTorch 笔记(14)— nn.module 实现简单感知机和多层感知机
autograd 实现了自动微分系统,然而对深度学习来说过于底层,而本节将介绍 nn 模块,是构建于 autograd 之上的神经网络模块。1. nn.Module使用 autograd 可实现深度学习模型,但其抽象程度较低,如果用其来实现深度学习模型,则需要编写的代码量极大。在这种情况下,torch.nn 应运而生,其是专门为深度学习设计的模块。torch.nn 的核心数据结构是 Module ,它是一个抽象的概念,既可以表示神经网络中的某个层(layer),也可以表示一个包含很多层的神经网络。在原创 2020-07-31 23:15:15 · 1266 阅读 · 0 评论 -
PyTorch 笔记(13)— autograd(0.4 之前和之后版本差异)、Tensor(张量)、Gradient(梯度)
1. 背景简述torch.autograd 是 PyTorch 中方便用户使用,专门开发的一套自动求导引擎,它能够根据输入和前向传播过程自动构建计算图,并执行反向传播。计算图是现代深度学习框架 PyTorch、TensorFlow 等的核心,它为自动求导算法——反向传播提供了理论支持。关于反向传播的基础,请参考:浅显易懂的计算图2. autogradPyTorch 在 autograd 模块中实现了计算图的相关功能,autograd 的核心数据结构是 Variable 。Variable 封装了原创 2020-07-30 22:31:39 · 1034 阅读 · 0 评论 -
PyTorch 笔记(12)— Tensor 持久化、向量化、torch.set_num_threads、torch.set_printoptions
1. 持久化Tensor 的保存和加载也比较简单,使用 t.save 个 t.load 即可完成相应的功能,在 save、load时可指定使用的 pickle 模块,在 load 时还可将 GPU Tensor 映射到 CPU 或其它 GPU 上。2. 向量化向量化计算是一种特殊的并行计算方式,一般程序在同一时间只执行一个操作指令,而向量化计算可在同一时间执行多个操作,通常是对不同的数据执行同样的一个或一批指令,或者说把指令应用于一个数组或向量上。向量化可极大地提高科学运算效率,在科学计算中应当极原创 2020-07-29 22:21:39 · 4131 阅读 · 2 评论 -
PyTorch 笔记(11)— Tensor内部存储结构(头信息区 Tensor,存储区 Storage)
1. Tensor 内部存储结构tensor 数据结构如下图所示,tensor 分为头信息区(Tensor)和存储区 (Storage),信息区主要保存着 Tensor 的形状(size)、步长(stride)、数据类型(type )等信息,而真正的数据则保存成连续的数组。由于数据动辄成千数万,因此信息区占用内存较少,主要内存占用取决于 tensor 中元素数目,即存储区大小。2. 存储区一般来说,一个 tensor 有着与之对应的 storage , storage 是在 data 之上封原创 2020-07-28 22:32:15 · 3258 阅读 · 0 评论 -
PyTorch 笔记(10)— Tensor 与 NumPy 相互转换、两种共享内存以及两者的广播法则
Tensor 可以与 NumPy 相互转化。1. Tensor 转化为 NumPyIn[2]: import torchIn[3]: a = torch.ones(5)In[4]: aOut[4]: tensor([1., 1., 1., 1., 1.])In[5]: b = a.numpy()In[6]: bOut[6]: array([1., 1., 1., 1., 1.], dtype=float32)2. NumPy 转化为 TensorIn[7]: import nump原创 2020-07-27 23:12:34 · 1579 阅读 · 0 评论 -
PyTorch 笔记(09)— Tensor 线性代数计算(torch.trace、torch.diag、torch.mm、torch.dot、torch.inverse逆矩阵、转置)
1. 常用函数常用线性表函数如下表所示:原创 2020-07-26 22:20:56 · 14829 阅读 · 0 评论 -
PyTorch 笔记(08)— Tensor 比较运算(torch.gt、lt、ge、le、eq、ne、torch.topk、torch.sort、torch.max、torch.min)
1. 说明比较函数中有一些是逐元素比较,操作类似逐元素操作,还有一些类似归并操作,常用的比较函数如下表所示。表中第一行的比较操作已经实现了运算符重载,因此可以使用 a>=b,a>b ,a !=b 和 a == b,其返回的结果是一个 ByteTensor,可用来选取元素。max/min 操作有些特殊,以 max 为例,有以下三种使用情况:t.max(tensor) : 返回 tensor 中最大的一个数;t.max(tensor,dim) : 指定维上最大数,返回 tensor 和原创 2020-07-21 22:35:57 · 9622 阅读 · 0 评论 -
PyTorch 笔记(07)— Tensor 的归并运算(torch.mean、sum、median、mode、norm、dist、std、var、cumsum、cumprod)
1. Tensor 归并运算函数此类操作会使输出形状小于输入形状,并可以沿着某一维度进行指定操作,如加法, 既可以计算整个 tensor 的和,也可以计算 tensor 每一行或者 每一列的和,常用归并操作如下表所示:2. 使用示例...原创 2020-07-20 22:44:15 · 7282 阅读 · 1 评论 -
PyTorch 笔记(06)— Tensor 索引操作(index_select、masked_select、non_zero、gather)
Tensor 支持与 numpy.ndarray 类似的索引操作,如无特殊说明,索引出来的结果与源 tensor 共享内存,即修改一个,另外一个也会跟着改变。In [65]: a = t.arange(0,6).reshape(2,3) In [66]:原创 2020-07-19 22:37:02 · 34240 阅读 · 0 评论 -
PyTorch 笔记(05)— Tensor 基本运算(torch.abs、torch.add、torch.clamp、torch.div、torch.mul、torch.pow等)
2. Tensor 基本运算2.1 torch.abs将参数传递到 torch.abs 后返回输入参数的绝对值作为输出,输入参数必须是一个 Tensor 数据类型的变量。import torcha = torch.randn(2, 3)print ab = torch.abs(a)print b输出结果:tensor([[ 0.4873, 0.8172, 0.2003], [ 0.6815, 1.5656, -0.8303]])tensor([[0.4873,原创 2020-07-18 23:03:46 · 34433 阅读 · 0 评论 -
PyTorch 笔记(04)— Tensor 属性方法(获取元素个数numel/neleme、查看形状size()/shape、增减维度squeeze()/unsqueeze()、resize形状)
1. 获取 Tensor 元素个数获取 Tensor 的元素个数 ,a.numel() 等价 a.nelement()In [16]: a.numel() Out[16]: 6In [17]: a.nelement() Out原创 2020-07-17 23:25:03 · 13367 阅读 · 0 评论 -
PyTorch 笔记(03)— Tensor 数据类型分类(默认数据类型、CPU tensor、GPU tensor、CPU 和 GPU 之间的转换、数据类型之间转换)
1.1 torch.FloatTensor用于生成数据类型为浮点型的 Tensor,传递给 torch.FloatTensor 的参数可以是一个列表,也可以是一个维度值。import torcha = torch.FloatTensor(2, 3)b = torch.FloatTensor([1, 2, 3, 4])输出结果:tensor([[2.3489e-37, 4.5835e-41, 2.3489e-37], [4.5835e-41, 4.4842e-44, 0.0原创 2020-07-16 23:13:34 · 4479 阅读 · 0 评论 -
PyTorch 笔记(02)— 常用创建 Tensor 方法(torch.Tensor、ones、zeros、eye、arange、linspace、rand、randn、new)
PyTorch 中的张量(Tensor)类似 NumPy 中的 ndarrays,之所以称之为 Tensor 的另一个原因是它可以运行在 GPU 中,以加速运算。PyTorch 中的 Tensor 也有自己的数据类型定义方式,常用的如下。1. Tensor 基本数据类型1.1 torch.FloatTensor用于生成数据类型为浮点型的 Tensor,传递给 torch.FloatTensor 的参数可以是一个列表,也可以是一个维度值。import torcha = torch.Floa原创 2020-07-15 23:06:42 · 10365 阅读 · 0 评论 -
PyTorch 笔记(01)— Ubuntu 使用 pip 清华源安装 PyTorch
PyTorch 的安装可以到官网 https://pytorch.org/,选择适合自己机器以及安装方式,执行对应的命令即可。除了安装 PyTorch 之外,建议也安装 torchvision 包。torchvision 包是服务于 PyTorch 深度学习框架的,用来生成图片、视频数据集和一些流行的模型类和预训练模型。简单来说,torchvision 由 torchvision.datasets 、torchvision.models 、torchvision.transforms 、t原创 2020-07-14 23:10:29 · 1988 阅读 · 0 评论 -
PyTorch 安装和基本运算— Tensor 的数据类型(浮点型、整型、随机浮点型等)、基本运算(绝对值、求和、裁剪、求商、求积、求幂等)、Tensor 与 Numpy 转换
PyTorch 中的 Tensor 也有自己的数据类型定义方式,常用的如下。1. Tensor 基本数据类型1.1 torch.FloatTensor用于生成数据类型为浮点型的 Tensor,传递给 torch.FloatTensor 的参数可以是一个列表,也可以是一个维度值。import torcha = torch.FloatTensor(2, 3)b = torch.Floa...原创 2020-04-24 22:10:19 · 1728 阅读 · 0 评论
分享