【pytorch学习笔记】

Pytorch学习笔记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、简介

PyTorch是美国互联网巨头Facebook在深度学习框架Torch的基础上使用Python重写的一个全新的深度学习框架,它更像NumPy的替代产物,不仅继承了NumPy的众多优点,还支持GPUs计算,在计算效率上要比NumPy有更明显的优势;不仅如此,PyTorch还有许多高级功能,比如拥有丰富的API,可以快速完成深度神经网络模型的搭建和训练。所以 PyTorch一经发布,便受到了众多开发人员和科研人员的追捧和喜爱,成为AI从业者的重要工具之一。

二、Tensor

​ Tensor,张量。在TensorFlow中数据的核心单元就是Tensor。在PyTorch中Tensor负责存储基本数据,PyTorch也对Tensor提供了丰富的函数和方法,PyTorch中Tensor与Numpy的数组十分相似。并且PyTorch中定义的Tensor数据类型可以实现在GUPs上进行运算,并且只需要对变量做一些简单的类型转换就可以实现。

1.Tensor的数据类型

首先需要掌握Tensor定义不同数据类型的方法,常用的如下:
tensor的数据类型

2.Tensor创建

2.1典型的tensor构建方法

torch.tensor(data, 
             dtype=None, 
             device=None, 
             requires_grad=False, 
             pin_memory=False)

功能解释:从data创建tensor

data:数据,可以是list,ndarray
dtype:数据类型
device:所在设备,cuda/cpu
requires_grad:是否计算梯度
pin_memory:是否存于锁页内存

2.2从其他形式转换成tensor

torch.from_numpy(ndarray)

功能解释:从numpy转换成tensor

通过该函数将ndarray转换成tensor格式后,原ndarray与tensor共享内存,当其中一个被更改则另一个也发生更改。

torch.as_tensor(data,
                dtype=None,
                device=None)

功能解释:将数据直接转换成tensor

dtype : 数据类型
device : 所在设备,cuda/cpu

2.3创建特殊值组成的tensor

torch.zeros()

torch.zeros(size, 
            out=None, 
            dtype=None, 
            layout=torch.strided, 
            device=None, 
            requires_grad=False)

功能解释:创建size大小,值全为0的Tensor

size: 张量的形状,如(3, 3)、(3, 224,224)
out : 输出的张量,将创建的tensor赋值给out,共享内存
dtype : 数据类型
layout : 内存中布局形式,有 strided,sparse_coo(稀疏张量使用)等
device : 所在设备,cuda/cpu
requires_grad:是否需要计算梯度

torch.zeros_like()

torch.zeros_like(input, 
                 dtype=None, 
                 layout=None, 
                 device=None, 
                 requires_grad=False)

功能解释:创建input.size()大小,值全为0的Tensor

intput: 创建与input同形状的全0张量

torch.ones()

torch.ones(size, 
           out=None, 
           dtype=None, 
           layout=torch.strided, 
           device=None, 
           requires_grad=False)

功能解释:创建size大小,值全为1的Tensor

torch.ones_like()

torch.ones_like(input, 
                dtype=None, 
                layout=None, 
                device=None, 
                requires_grad=False)

功能解释:创建input.size()大小,值全为1的Tensor

torch.full()

torch.full(size, 
           fill_value, 
           out=None, 
           dtype=None, 
           layout=torch.strided, 
           device=None, 
           requires_grad=False)

功能解释:创建size大小,值全为fill_value的Tensor
fill_value:张量中填充的值

torch.full_like()

torch.full_like(input, 
                fill_value, 
                dtype=None, 
                layout=None, 
                device=None, 
                requires_grad=False)

功能解释:创建input.size()大小,值全为fill_value的Tensor

torch.eye()

torch.eye(n,
          m=None,
          out=None,
          dtype=None,
          layout=torch.strided,
          device=None,
          requires_grad=False)

功能解释:创建n行m列的,对角线值为1其他值为0的Tensor,注意:未输入m时,m=n

torch.tempy()

torch.empty(sizes,
            out=None,
            dtype=None,
            layout=torch.strided,
            device=None,
            requires_grad=False)

功能解释:创建sizes大小的tensor,里面填入out中对应索引的值,如果不足补0。如果没有导入out则随机生成。

out:创建的tensor将对应索引设置成out中相同的值

torch.tempy_like()

torch.empty_like(input,
                 dtype=None,
                 layout=None,
                 device=None,
                 requires_grad=False)

功能解释:创建input.size()大小,值全为0的Tensor

2.4按步长或者区间创建tensor

torch.arange()

torch.arange(start=0, 
             end, 
             step=1, 
             out=None, 
             dtype=None, 
             layout=torch.strided, 
             device=None, 
             requires_grad=False)

功能解释:创建起始值start,结束值end,步长step,等差的一维张量(int64,不包括end)

start:数列起始值,默认为0
end:数列结束值
step:数列公差,默认为1

torch.range()

torch.range(start=0, 
             end, 
             step=1, 
             out=None, 
             dtype=None, 
             layout=torch.strided, 
             device=None, 
             requires_grad=False)

功能解释:创建起始值start,结束值end,步长step,等差的一维张量(float32,包括end)

torch.linspace()

torch.linspace(start, 
               end, 
               steps=100, 
               out=None, 
               dtype=None, 
               layout=torch.strided, 
               device=None, 
               requires_grad=False)

功能解释:创建起始值start,结束值end,步长(end-start)/steps,等差的一维张量

steps:创建张量中元素的个数,默认值为100

torch.logspace()

torch.linspace(start, 
               end, 
               steps=100, 
               out=None, 
               dtype=None, 
               layout=torch.strided, 
               device=None, 
               requires_grad=False)

功能解释:创建起始值10start,结束值10end,步长10^(end-start)/steps,等差的一维张量

2.5Tensor的组合/变形

torch.cat()

torch.cat(seq,
          dim=0,
          out=None)

功能解释:将seq序列在dim维度上连接在out中

seq: python序列或者相同类型的张量序列
dim:沿着此维度连接张量,0沿y轴,1沿x轴
out:输出参数

torch.t()

torch.t(input)

功能解释:将tensor转置,只针对2D

torch.transpose()

torch.transpose(input,
                dim0,
                dim1)

功能解释:交换两个维度

torch.squeeze()

torch.squeeze(input,
              dim=None,
              out=None)

功能解释:去除那些维度大小为1的维度

torch.unbind()

torch.unbind(tensor,
             dim=0)

功能解释:去除某个维度

torch.unsqueeze()

torch.unsqueeze(input,
                dim,
                out=None)

功能解释:在指定位置添加维度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值