PyTorch深度学习总结
第二章 PyTorch中改变张量(Tensor)形状操作
文章目录
- PyTorch深度学习总结
- 一、前言
- 二、改变张量形状
一、前言
上文讲解了张量生成
和信息获取
的知识,本文将针对张量的操作
进行详细讲解。
二、改变张量形状
1、改变张量形状的函数总结:
函数 | 描述 |
---|---|
A.reshape(3, 4) | 改变张量A形状为3*4 |
A.resize_(3, 4) | 改变张量A形状为3*4 |
A.resize_as_(B) | 改变张量A形状与张量B相同 |
torch.unsqueeze(A, dim=0) | 在A的0维度添加尺寸为1的新张量 |
torch.unsqueeze(A, dim=0) | 移除A的维度为1的维度 |
torch.unsqueeze(A) | 移除A中所有维度为1的维度 |
A.expand(3, -1) | 将张量A扩充为3行 |
A.expand_as(C ) | 将张量A根据C的大小形状进行扩充 |
A.repeat(1, 2, 2) | 对张量A的对应维度进行扩充 |
2、部分函数细节讲解
针对
unsqueeze
的讲解:# 引入库 import torch# 生成张量A A = torch.arange(start=0, end=2, step=1) # 使用torch.unsqueeze函数添加维度 B = torch.unsqueeze(A, dim=0) print(A, B) print(A.shape, B.shape)
输出结果为:
tensor([0, 1]) , tensor([[0, 1]])
torch.Size([2]), torch.Size([1, 2])
针对
squeeze
的讲解:# 生成多维度的张量C C = torch.unsqueeze(B, dim=0)# 对维度为1的维度进行裁剪 D = torch.squeeze(C, dim=0) E = torch.squeeze(C)# 输出结果 print(C, D, E) print(C.shape, D.shape, E.shape)
输出结果:
tensor([[[0, 1]]]) , tensor([[0, 1]]), tensor([0, 1])
torch.Size([1, 1, 2]), torch.Size([1, 2]) , torch.Size([2])