ch在python中的意思_Python p1ch3.1-3.4python深度学习的一些基本语法,Deeplearningwithpytorchp1ch3134pytorch...

本文介绍了在深度学习中,Tensor的概念及其在Python中如何创建、切片、广播和降维。通过实例展示了如何利用PyTorch创建Tensor,进行切片选择,以及如何通过unsqueeze和align_as进行维度调整。此外,还提到了命名Tensor的方法,帮助读者更好地理解和使用Tensor。
摘要由CSDN通过智能技术生成

tensor的含义

在DL中,tensor指的是多维向量,例如 [ [ [1, 2], [3, 4], [5, 6] ] ]。该tensor的大小为[1, 3, 2]。与list,tuple这些数据结构不同的是,系统会给tensor分配一块连续的内存,而不是分散分配。

创建一个tensor

通过list创建:

points = torch.tensor([[4.0,1.0],[2.0,1.0],[5.0,3.0]])

通过torch.zeros创建,初始化全为0,后续可以自己赋值:

points = torch.zeros(3,2)

out:tensor([[0., 0.],

[0., 0.],

[0., 0.]])

tensor的切片操作

与pthon内置的list操作类似,记录一下之前比较容易出错的和新出现的操作。

somelist[:-1] #取出从第一个元素到倒数第二个元素的所有元素,不包括最后一个

somelist[1:,:] #取出第二行(下标为1)到最后一行的所有列的元素

somelist[1:,0] #取出第二行(下标为1)到最后一行的第0列元素

somelist[1:,1] #取出第二行(下标为1)到最后一行的第1列元素

增加一个维度,也就是增加一个方括号。

points[None]

out:tensor([[[4., 1.],

[2., 1.],

[5., 3.]]])

tensor的broadcast(升维?)和降维操作

img为(3,5,5),weights为(3),batch_t为(2,3,5,5)

img = torch.randn(3,5,5)

weights = torch.tensor([0.2126, 0.7152, 0.0722])

batch_t = torch.randn(2,3,5,5)

使用mean,sum方法降维,-3代表倒数第三个数字。

img_gray_naive = img.mean(-3)

batch_gray_naive = batch_t.mean(-3)

img_gray_naive,batch_gray_naive

out: (torch.Size([5, 5]), torch.Size([2, 5, 5]))

将weights升维为(3,1,1),方便与img相乘,img为(3,5,5),理论上来说只有行数和列数相等的tensor才能相乘(此处为对应元素相乘,并不是矩阵相乘),pytorch中有自动扩充的功能,详情见

broadcast高级应用

unsqueezed_weights = weights.unsqueeze(-1).unsqueeze_(-1)

img_weights = (img * unsqueezed_weights)

使用align_as对齐扩充维度,与img对齐:

weights_aligned = weights.align_as(img)

weights_aligned.shape, weights_aligned.name

out:torch.Size([3, 1, 1]), None

书里面给了一个例子,没怎么看懂:batch_t 的大小为(2, 3, 5, 5) 乘以 大小为(3, 1, 1)unsqueezed_weights, 得到了一个形状为 (2, 3, 5, 5)的tensor,。不清楚第一个数字2是否有扩维。

tensor命名

在创建的时候命名:

weights_named = torch.tensor([0.2126, 0.7152, 0.0722], names = ['channels'])

创建之后使用refine_names:

img_name = img.refine_names(...,'channels','rows','columns')

print('img named:',img_name.shape,img_name.names)

out: img named: torch.Size([3, 5, 5]) ('channels', 'rows', 'columns')

结语

主要是对于降维和扩维的理解不是很清楚,后续用到的话再慢慢理解吧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值