pytorch学习笔记

本文介绍了PyTorch中的tensors概念,它们作为多维数组,支持GPU运算,并能与numpy共享内存。内容涵盖tensors的创建、类型检查、基本操作如全零tensor、变换、拼接、分块等,以及随机种子设定和各种分布生成函数。此外,还强调了torch.autograd的自动微分功能。
摘要由CSDN通过智能技术生成

1.tensors的概念:

可以理解为多维数组。

和numpy数组很像,tensors数据类型可以在gpu或者是其他一些硬件上面运行。

tensor还可以和numpy共享地址,对二者其中任意一个修改,另一个也会修改。

tensor是自动微分的

创建tensor:使用torch.tensor()

1.可以传入一个列表

2.可以传入一个numpy数组

3.使用torch.rand_like()或者ones_like()

4.使用torch.rand()或者torch.ones根据输入型号创建,()中可以是元组、列表,但是不能是集合。

查看(tensor)张量是在cpu或者gpu上,可以使用张量名.device来查看

更多具体用法参考pytorch官方文档

torch — PyTorch 1.13 documentation

 tensor相关方法:

1.判断是否是tensor数据类型:torch.is_tensor(obj)

2.判断是否是浮点型:torch.is_floating_point

 3.判断一个数据类型否是非零:torch.is_nonzero(obj)

ps:只能判断只含有一个数的tensor,如图,不是一个数的话会报错,不能比较

4.判断一个tensor数据类型里面含有多少个数:torch.numel(obj)

tensor的相关操作:

1.创建tensor:

  • torch.as_tensor(obj)  //obj可以是列表,元组,但转化过后不会自动打印dtype

  • torch.from_numpy(obj)  //创建一个从numpy转化来的tensor,会打印dtype

  • torch.tensor(obj)  //以上两种方法都可以直接用第三种,也不会打印dtype

2.创建全零tensor:torch.zeros(obj)||torch.zeros_like(obj):

zeros()的参数第一个是形状,可以是元组也可以是列表,第二个是类型dtype=

zeros_like()的作用是创建与传入对象形状一样的全零tensor

3.设置默认的初始化tensor数据类型:torch.set_default_tensor_type(type)

4.torch.arange/torch.range区别:

torch.arange(start,end,step):[strat,end)  //可以只写一个参数,前闭后开

torch.range(start,end,step):[start,end]  //至少写上start和end,前闭后闭

5.linspace//logspace

6.产生对角线全是1的矩阵:torch.eye()

 7.产生一个全部由...填充的矩阵:torch.full()//torch.full_like()

 8.  tensor的拼接:torch.cat()

dim参数表示从哪个维度进行拼接,如果是二维的tensor即矩阵的话,dim=0表示在行上面做拼接,dim=1表示在列上面做拼接

 9.将一个张量平均分成若干份:torch.chunk()

第一个参数是被分张量,第二个是分成块数,第三个是从哪个维度进行分块,默认是dim=0

  10.改变tensor的形状:torch.reshape(input,shape)

当变成一维的时候,直接把shape设置成[-1],注意这里需要使用列表形式

11.torch.scatter:不是很理解有什么用

12.将tensor进行分块,可以均分,也可以传入列表按照列表每个元素进行分:torch.split()

13.对多余的维度进行压缩(移除掉维度为1的部分): torch.squeeze()

即保持维度的乘积不变,将A*B*1*C*1*D变成A*B*C*D

另外还可以指定压缩某个为1的维度:dim从0开始,这里只能设置为int,不能设置为列表,即一次只能指定一个维度被压缩。

 

 14.在某个维度将两个相同大小的tensor堆叠起来,有维度的扩充:torch.stack(tensors,dim=)

 15.先将tensor铺平,再从里面取出对应位置上的元素:torch.take()

 16.在某个维度上进行复制:torch.tile()

如图将a的行复制3倍,列复制2倍,编程一个6*6的矩阵,如果保持某一维度不变则写成1

 17.将tensor做维度转换,即矩阵的转置:torch.transpose()

一共有3个参数,第一个是传入的数,第二个和第三个是需要转换的维度

 18.拆分tensor:torch.unbind(input,dim)

 19.在某一个维度上进行增维:torch.unsqueeze(input,dim)

20.判断执行:torch.where(condition,x,y)

如果condition成立,则x,否则y,如图,在x>0的位置保留0,其余位置用y中的数字来填充

 令y=1也可以

 21.随机种子设定:torch.manual_seed

注意numpy、pytorch的设定,才能保证多次随机一样

22.根据传入的概率矩阵返回相同形状的0-1矩阵:torch.bernoulli()

23.根据均值、方差返回tensor:torch.normal()

24.返回[0,1)的tensor:torch.rand()

返回整数tensor:torch.randint(start,end,shape)

返回高斯分布的tensor,可正可负:torch.randh()

25.将[0,int-1]的数字进行随机排列:torch.randperm(int)

来源于B站deep_thoughts博主关于pytorch源码解读1-3课时,仅做学习笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值