Pytorch学习笔记记录

1、torch.index_select(input, dim, index, out=None)

沿着指定维度对输入进行切片,取index中指定的相应项(index为一个LongTensor),然后返回到一个新的张量,返回的张量与原始张量不共享内存空间

2、torch.masked_select(input, mask, out=None)

根据掩码张量mask中的二元值(0或者1),取输入张量中的指定项(mask为一个BoolTensor),将取值返回到一个新的1D张量,返回的张量与原始张量不共享内存空间。

3、torch.nonzero(input, out=None, as_tuple=False)

返回输入input中非零元素索引的张量,输出张量的每行包含输入中非零元素的索引。

as_tuple参数默认为False,返回的是Z*N的张量,其中Z是输入张量input中所有非零元素的个数,N为input的维度。结果如下图所示。

当as_tuple设置为True时,输出的形式则为tuple,其中包含N个张量, N为input的维度,每个张量中为1D张量格式,包含着相应维度输入中非零元素的索引。

4、torch.squeeze(input, dim=None, out=None)

该方法其实很简单,就是将输入张量形状中的1去处并返回。dim参数则是指定维度,则只在固定维度上进行挤压,具体看如下例子,先是没有指定维度,则将张量形状中的1都去处了。

然后再看一个指定维度的例子,还是上面同样的例子,具体效果如下图。

5、torch.unsqueeze(input, dim=None, out=None)

该方法正好与上述方法相反,torch.squeeze()方法是将输入张亮形状中的1去处,而该方法torch.unsqueeze()则是在指定维度插入维度1,看一个简单的例子。

6、torch.expand(*sizes)

返回tensor的一个新视图,单个维度扩大为更大的尺寸。扩大tensor不需要分配新内存,只是仅仅新建一个tensor的视图。

7、torch.expand_as(tensor)

将tensor扩展为参数tensor的大小。

8、torch.repeat(*sizes)

沿着指定维度重复tensor,不同于expand(),本函数复制的是tensor中的数据。

OK,第一个pytorch学习笔记就先记录这几个方法,在目标检测源码中总是会出现上述方法的身影,所以仔细研究很有必要。加油⛽️