pytorch tensor 张量常用方法介绍
1. view( )函数
PyTorch 中的view( )函数相当于numpy中的resize( )函数,都是用来重构(或者调整)张量维度的,用法稍有不同。
>>> import torch >>> re = torch.tensor([1, 2, 3, 4, 5, 6]) >>> result = re.view(3,2) >>> result tensor([[1, 2], [3, 4], [5, 6]])
i.e.
view(3, 2)将张量重构成了3x2维的张量。
view(-1)
>>> import torch >>> re = torch.tensor([[1, 2], [3, 4], [5, 6]]) >>> result = re.view(-1) >>> result tensor([1, 2, 3, 4, 5, 6])
i.e.
view(-1)将张量重构成了1维的张量。
view(-1, 参数b)
>>> import torch >>> re = torch.tensor([1, 2, 3, 4, 5, 6]) >>> result = re.view(-1, 2) >>> result tensor([[1, 2], [3, 4], [5, 6]])
i.e.
torch.view(-1, 参数b),则表示在参数a未知,参数b已知的情况下自动补齐行向量长度,在这个例子中b=3,re总共含有6个元素,则a=6/2=3。
2. squeeze()函数
squeeze()函数的功能是维度压缩。返回一个tensor(张量),其中 input 中大小为1的所有维都已删除。
举个例子:如果 input 的形状为 (A×1×B×C×1×D),那么返回的tensor的形状则为 (A×B×C×D)
当给定 dim 时,那么只在给定的维度(dimension)上进行压缩操作。
3. no_grad()函数
torch.no_grad()
一般用于神经网络的推理阶段, 表示张量的计算过程中无需计算梯度
4. max()函数
torch.max(input, dim, max=None, max_indices=None) -> (Tensor, LongTensor)
返回输入张量给定维度上每行的最大值,并同时返回每个最大值的位置索引。
5. eq()函数
torch.eq(input, other, *, out=None)
Parameters(参数):
input :必须是一个Tensor,该张量用于比较
other :可以是一个张量Tensor,也可以是一个值value
return(返回值):返回一个Boolean类型的张量,对两个张量Tensor进行逐元素的比较,若相同位置的两个元素相同,则返回True;若不同,返回False。
x = torch.tensor([[1, 2], [3, 4]]) y = torch.tensor([[1, 1], [3, 3]]) print(x) print(y) out = torch.eq(x, y) print(out)
一般用法:
acc += torch.eq(predict_y, val_labels).sum().item()
6. item()函数
.item()
方法返回张量元素的值
注:张量中只有一个元素才能调用该方法,多个元素会报错: