pytorch 之 torch.squeeze() 和 torch.unsqueeze()用法

第一块:

squeeze(),主要是对数据的维度进行压缩,去掉元素数为1的那个维度,使用方式:a.squeeze(N) or torch.squeeze(a,N) ,去掉a的第N维度,以此来实现数据a的维度压缩;

unsqueeze()与squeeze()函数功能相反,其功能是对数据维度进行扩充,使用方式:a.unsqueeze(N) or torch.unsqueeze(a,N),在数据a的第N维度上增加一个维数为1的维度,以此实现对数据的扩充,方便后续模型训练喂入模型的数据的维度和模型接收数据的维度是匹配的。


第二块:

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") model.to(device) # 选择第0个cuda

model.to(device)

以上两行代码放在读取数据之前。

mytensor = my_tensor.to(device) #将所有最开始读取数据时的tensor变量copy一份到device所指定的GPU上,之后运算都在指定的GPU上进行。这些tensor多是最开始读取数据时的变量,后面其衍生出的新变量也会在已指定的GPU上运行计算。



第三块:

Tensor & Numpy 都是矩阵,区别在与Tensor可以在GPU上运行,Numpy只能在CPU上运行。(天呐,我现在才知道!)Tensor与Numpy互相转化很方便,类型也比较兼容,Tensor可以直接通过print显示数据类型,而Numpy不可以


第四块:

x.aadd(y) 实现x与y Tensor的相加,不改变x,返回一个新的Tensor

x.add_(y)  实现x与y Tensor的相加,会修改x的维数


你可能感兴趣的:(pytorch 之 torch.squeeze() 和 torch.unsqueeze()用法)