【Week1】张量

本文介绍了PyTorch中的张量概念,包括张量的定义、Variable的属性以及张量的创建方法,如直接创建、依据数值创建,并详细阐述了各种创建函数的参数和用法,如torch.tensor(), torch.zeros(), torch.normal()等。" 113075038,10542778,Golang NIO模型与高性能网络库解析,"['Golang', '网络编程', 'NIO模型', '多路复用模型', '系统调用']
摘要由CSDN通过智能技术生成

【Week1】张量

张量是什么

张量是一个多维数组,是标量、向量、矩阵的高维拓展。标量是没有方向的。

Variable是torch.autograd中的数据类型,主要用于对Tensor封装,进行自动求导,对Tensor进行属性添加。

Variable 的五个属性:

​ data:被包装的Tensor

​ grad:data的梯度

​ grad_fn:创建Tensor的Function,是自动求导的关键。

​ requires_grad:指是否需要梯度

​ is_leaaf: 指是否是叶子节点(张量)

从pytorch 0.4开始,Variable并入Tensor,新加入了三个属性:

​ dtype:张量的数据类型,例如torch.FloatTensor,torch.cuda.FloatTensor

​ 注:CV中常用到的数据类型 torch.float32、torch.long(图像标签常用)

​ shape:张量的形状,如(6,3,224,224)

​ device:张量所在设备,GPU/CPU,是加速的关键

张量的创建
一、直接创建

torch.tensor()

功能:从data创建tensor

参数:

  • data:数据,可以是list,numpy
  • dtype:数据类型,默认与data的一致
  • device:所在设备
  • requires_grad:是否需要内存
  • pin_memory:是否存于锁页内存

torch.from_numpy(ndarray)

功能:从numpy创建tensor

**注:**从torch.from_numpy创建的tensor和原来的ndarray是共享内存的。

二、依据数值创建

torch.zeros()

功能:根据size创建全零张量

参数:

  • size :张量的形状,(3,3)、(3,224,224)
  • out:输出的张量
  • layout :内存中的布局形式,默认是strided,sparse_coo是表示一个稀疏矩阵
  • device:所在设备,gpu/cpu
  • requires_grad:是否需要梯度

torch.zeros_like()

功能:创建和input形状一样的全0张量

参数:

  • input:创建与input同形状的全0张量
  • dtype:数据类型
  • layout:内存中的布局形式

注:torch.ones()和torch.ones_like()与zeros相近

torch.full()和torch.full_like()

功能:依input形状创建指定数据的张量

  • size:张量的形状,如(3,3)
  • fill_value:张量的值

torch.arrange()

功能:创建等差的1维张量

注:数值区间为[star,end)

  • start:数列的起始值
  • end:数列的“结束值”
  • step:数列公差,默认为1

torch.linsapce()

功能:创建均分的1维张量

注:数值区间为[star,end),数列间隔为:(end-start)/(step-1)

  • start:数列的起始值
  • end:数列的“结束值”
  • step:数列长度

torch.logspace()

功能:创建对数均分的1维张量

注:长度为steps,底为base

  • start:数列的起始值
  • end:数列的结束值
  • steps:数列长度
  • base:对数函数的底,默认为10

torch.eye()

功能:创建单位对角矩阵(2维张量)

注意事项:默认为方正,只用传一个参数

  • n:矩阵行数
  • m:矩阵列数

三、依概率分布的创建张量

torch.normal()

功能:生成正态分布(高斯分布)

  • mean:均值
  • std:标准差

四种模式:
在这里插入图片描述
mean为标量,std为标量 增加一个参数size,torch.normal(0,1,size=(4,))当都为标量的时候,size是一个元组类型。

mean为标量,std为张量

mean为张量,std为标量

mean为张量,mean为张量 结果也是张量

torch.randn_like()和torch.randn()

功能:生成标准整态正态分布

  • size:张量的形状

torch.rand()

torch.rand_like()

功能:在区间[0,1)上,生成均匀分布

torch.randint()

torch.randint_like()

功能:区间[low,high)生成整数均匀分布

  • size:张量的形状

torch.randperm()

功能:生成从0到n-1的随机排列

  • n:张量的长度

torch.bernoulli()

功能:以input为概率,生成伯努力分布(0-1分布,两点分布)

  • input:概率值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值