如何在pytorch中使用view()来改变张量的视图

152 阅读3分钟

"在这个PyTorch教程中,我们将看到如何在PyTorch中改变一个张量的视图。PyTorch是一个开源的框架,可以用Python编程语言。

张量是一个多维数组,用于存储数据。所以为了使用张量,我们必须导入Torch模块。

要创建张量,使用的方法是tensor()"

语法

torch.tensor(data)

其中data是一个多维数组。

tensor.view()

PyTorch中的view()用于改变张量对象的视图,将其转换为指定数量的行和列。

语法

tensor_object.view(r,c)

它需要两个参数:

  1. r指定要从tensor_object中形成的行数。
  2. 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()方法中指定数据类型来修改现有张量的数据类型。