pytorch基础复习1.2——常用API

【写在前面】:此专栏为本人在系统复习pytorch基础时写下的笔记,复习内容与进度参考一位在B站讲 深度学习的up主(deep_thoughts),此笔记旨在帮助小伙伴快速入门和复习pytorch相关知识,写得不好的地方多担待,可直接移步up主的视频学习。此专栏全程无盈利性质。

up主(deep_thoughts)个人主页:
https://space.bilibili.com/373596439spm_id_from=333.788.b_765f7570696e666f.2

13.torch.full()

传入一个shape和一个value,返回一个数据全为value的tensor。

data_tensor = torch.full([1,3,3,2],10)
print(data_tensor)

14.torch.full_like()

传入一个tensor和需要填充的value,返回一个shape和原tensor一样的tensor。

data_tensor1 = torch.full([1,3,3,2],10)
data_tensor2 = torch.full_like(data_tensor1,5)
print(data_tensor2)

15.torch.cat()

将多个tensor在特定维度上拼接起来,可传入多个tensor,注意各个tensor除了拼接的维度可以不一样之外,其余维度必须都是一样的。

data1_tensor = torch.rand(1,2,3,4)
data2_tensor = torch.rand(1,3,3,4)
data3_tensor = torch.rand(1,4,3,4)
data_tensor  = torch.cat([data3_tensor,data2_tensor,data1_tensor],dim=1)
print(data_tensor.shape)

16.torch.chunk(input,chunks,dim=0)

将input tensor切片成多个tensor,数量为chunks个,沿着dim维度进行切分。维度与数量可以不整除。

data_tensor = torch.rand(3,2)
data1_tensor,data2_tensor = torch.chunk(data_tensor,2)
print(data_tensor)
print(data1_tensor)
print(data2_tensor)
print(data1_tensor.shape,data2_tensor.shape)

17.torch.gather(input,dim,index)

使用dim与index组合成坐标从input tensor中取数,组合成新的tensor。这个函数非常的抽象,官方介绍也很简介,接下来举例来帮助理解。
先看结果,再分析取数过程。

import torch
data_tensor = torch.tensor([[1,2],
							[3,4]])
data2_tensor = torch.gather(data_tensor,1,torch.tensor([[0,0],
														[1,0]]))
print(data_tensor)
print(data2_tensor)

运行代码会得到以下结果:

tensor([[1, 2],
        [3, 4]])
tensor([[1, 1],
        [4, 3]])

那么这是怎么得出来的呢。首先,根据dim与index的数据生成取数坐标。其中,dim为指定index的值为第几维度。例如:dim=1。则index的值全部为取数坐标的第一维度。那么就可以得到初始坐标。

#让我们先用index的值填入取数坐标中,其中x为未知
(x,0),(x,0)
(x,1),(x,0)

取数坐标中只有第0维度没有填,那它就按照行顺序填充即可。

(0,0),(0,0)
(1,1),(1,0)

最后根据取数坐标从input中取数即可。

tensor([[1, 1],
        [4, 3]])

如果torch.gather(data_tensor,0,torch.tensor([[0,0],[1,0]]))的话,那么取数坐标就是:

(0,0),(0,1)
(1,0),(0,1)

那么这么抽象的函数应用场景大吗,个人感觉还是挺大的,在多分类问题或是强化学习上,我们在最后一层上得到的特征的维度一般是b*d,那么就可以通过这个函数取出我们想要的概率。

参考视频:
https://www.bilibili.com/video/BV1YY4y1Q72M/?spm_id_from=333.337.search-card.all.click&vd_source=22d2e9248ebced70dfe28100e2f0f97a

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值