张量的作用
Pytorch的数据类型为各式各样的Tensor,Tensor可以理解为高维矩阵(与Numpy中的Array类似)
通过使用Type函数可以查看变量类型。一
CPU张量类型
Pytorch中的tensor包括七种CPU张量类型和八种GPU张量类型,这里我们就只讲解一下CPU中的,GPU上的Tensor是CPU上的Tensor加cuda得到,如torch.cuda.FloatTensor:
- torch.FloatTensor(2,3) 构建一个2×3 Float类型的张量
- torch.DoubleTensor(2,3) 构建一个2×3 Double类型的张量
- torch.ByteTensor(2,3) 构建一个2×3 Byte类型的张量
- torch.CharTensor(2,3) 构建一个2×3 Char类型的张量
- torch.ShortTensor(2,3) 构建一个2×3 Short类型的张量
- torch.IntTensor(2,3) 构建一个2×3 Int类型的张量
- torch.LongTensor(2,3) 构建一个2×3 Long类型的张量
torch.Tensor是默认的tensor类型(torch.FlaotTensor)的简称,即系统默认的是torch.FloatTensor类型。例如:data = torch.Tensor(2,3)是一个2*3的张量,类型为FloatTensor(使用type()函数可以查看变量类型); data.cuda()就转换为GPU的张量类型,即torch.cuda.FloatTensor类型。
tensor.type()
tensor.type(new_type=None, async=False)
- 未提供new_type,则返回原先的类型
- 提供new_type,将此对象转换为指定的类型
- 已经是正确的类型,则不会执行且返回原对象
data = torch.LongTensor(2, 3)print('data变量的类型:', type(data))print('张量data所属的类型:', data.dtype) # x的具体类型print(data)# 转换为其他类型data_new = data.type(torch.Tensor) # torch.FloatTensor==torch.Tensorprint('data变量的类型:', type(data_new))print('张量data所属的类型:', data_new.dtype) # x的具体类型print(data_new)
结果如下:
tensor1.type_as(tesnor2)
- tensor1.type_as(tesnor2)将张量tensor1的类型转换为张量tensor2的类型
- 如果张量tensor1已经是张量tensor2的类型,则不会执行操作
data1 = torch.Tensor(2, 3)print('data1变量的类型:', type(data1))print('张量data1所属的类型:', data1.dtype) # x的具体类型print(data1)data2 = torch.IntTensor(2,3)print('data2变量的类型:', type(data2))print('张量data2所属的类型:', data2.dtype) # x的具体类型print(data2)data_new = data1.type_as(data2)print('data1变量的类型:', type(data_new))print('张量data1所属的类型:', data_new.dtype) # x的具体类型print(data_new) # 为什么全为0???
参考:https://blog.csdn.net/genous110/article/details/87038787
参考:https://blog.csdn.net/hustchenze/article/details/79154139
图片:https://blog.csdn.net/qq_26369907/article/details/89010672