"在这个PyTorch教程中,我们将看到如何在PyTorch中改变一个张量的视图。PyTorch是一个开源的框架,可以用Python编程语言。
张量是一个多维数组,用于存储数据。所以为了使用张量,我们必须导入Torch模块。
要创建张量,使用的方法是tensor()"
语法
torch.tensor(data)
其中data是一个多维数组。
tensor.view()
PyTorch中的view()用于改变张量对象的视图,将其转换为指定数量的行和列。
语法
tensor_object.view(r,c)
它需要两个参数:
- r指定要从tensor_object中形成的行数。
- c指定要从tensor_object中形成的列的数量。
请确保实际的张量对象包含偶数的元素。
例子1
在这里,我们将创建一个持有6个Float类型元素的张量,并改变其具有3行和2列的视图。
#import torch module
import torch
#create 1D tensor with Float data type that hold 6 elements
data1 = torch.FloatTensor([23,45,54,32,23,78])
#display
print("Actual Tensor: ",data1)
#change the data1 view to 3 rows and 2 columns.
print("Tensor with 3 rows and 2 columns: ",data1.view(3,2))
输出
Actual Tensor: tensor([23., 45., 54., 32., 23., 78.])
Tensor with 3 rows and 2 columns: tensor([[23., 45.],
[54., 32.],
[23., 78.]])
我们可以看到,张量的视图被改变为3行2列。
例2
在这里,我们将创建一个持有6个Float类型元素的张量,并改变其视图,即2行3列。
#import torch module
import torch
#create 1D tensor with Float data type that hold 6 elements
data1 = torch.FloatTensor([23,45,54,32,23,78])
#display
print("Actual Tensor: ",data1)
#change the data1 view to 2 rows and 3 columns.
print("Tensor with 2 rows and 3 columns: ",data1.view(2,3))
输出
Actual Tensor: tensor([23., 45., 54., 32., 23., 78.])
Tensor with 2 rows and 3 columns: tensor([[23., 45., 54.],
[32., 23., 78.]])
我们可以看到,张量的视图被改变为2行3列。
改变数据类型
可以使用view()来改变张量的数据类型。
我们需要在视图方法中指定数据类型。
语法
tensor_object.view(torch.datatype)
参数
它接受数据类型作为参数,如int8,int16等。
例子1
在这个例子中,我们将创建一个Float类型的张量并将其转换为int数据类型。
dtype是用来返回张量的数据类型的。
#import torch module
import torch
#create 1D tensor with Float data type that hold 6 elements
data1 = torch.FloatTensor([23,45,54,32,23,78])
#display
print("Actual Tensor data type: ",data1.dtype)
#change the data1 data type to int8
print("Converting to int8: ",data1.view(torch.int8).dtype)
#change the data1 data type to int16
print("Converting to int16: ",data1.view(torch.int16).dtype)
#change the data1 data type to int32
print("Converting to int32: ",data1.view(torch.int32).dtype)
#change the data1 data type to int64
print("Converting to int64: ",data1.view(torch.int64).dtype)
输出
Actual Tensor data type: torch.float32
Converting to int8: torch.int8
Converting to int16: torch.int16
Converting to int32: torch.int32
Converting to int64: torch.int64
例子2
在这个例子中,我们将创建一个Float类型的张量,并将其转换为int数据类型,然后获得大小。
#import torch module
import torch
#create 1D tensor with Float data type that hold 6 elements
data1 = torch.FloatTensor([23,45,54,32,23,78])
#display
print("Actual Tensor datatype: ",data1.size())
#change the data1 datatype to int8
print("Converting to int8: ",data1.view(torch.int8).size())
#change the data1 datatype to int16
print("Converting to int16: ",data1.view(torch.int16).size())
#change the data1 datatype to int32
print("Converting to int32: ",data1.view(torch.int32).size())
#change the data1 datatype to int64
print("Converting to int64: ",data1.view(torch.int64).size())
输出
Actual Tensor datatype: torch.Size([6])
Converting to int8: torch.Size([24])
Converting to int16: torch.Size([12])
Converting to int32: torch.Size([6])
Converting to int64: torch.Size([3])
总结
在这节PyTorch课程中,我们讨论了如何在pytorch中使用view()来改变张量的视图,以及通过在view()方法中指定数据类型来修改现有张量的数据类型。