torch.tensor
和 torch.Tensor
在功能上是一样的,都是用来创建 PyTorch 中的张量(Tensor)的函数。不同之处在于它们的调用方式和默认参数。
torch.tensor()
是一个工厂函数,可以接受原始数据、列表、元组或者其他的张量等作为输入,并返回一个新的张量。这个函数可以通过dtype
和device
参数指定数据类型和计算设备,也可以通过设置requires_grad
参数为True
来开启自动求导功能。这个函数的返回值总是一个新的张量,即使输入本身已经是张量了也是如此。
例如:
import torch # 创建一个包含随机数的浮点型张量 x = torch.tensor([1, 2, 3]) print(x) # 创建一个具有相同元素但不同属性的张量 y = torch.tensor([1, 2, 3], dtype=torch.float32, device=torch.device('cuda')) print(y)
输出结果如下:
tensor([1, 2, 3]) tensor([1., 2., 3.], device='cuda:0')
torch.Tensor()
是一个类,主要用来创建空的张量,其参数可以是张量的形状(shape)或者另一个张量。这个类方法没有dtype
或device
参数,创建的张量默认使用 CPU 计算设备和数据类型为torch.float32
。调用这个类方法会返回一个新的张量对象,如果输入是一个张量,那么返回的张量与输入张量具有相同的属性。
例如:
import torch # 创建三个形状不同的空张量 x = torch.Tensor(2, 3) print(x) y = torch.Tensor([1, 2, 3]) print(y) z = torch.Tensor([[1, 2], [3, 4]]) print(z)
输出结果如下:
tensor([[2.0000e+00, 5.6052e-44, 2.0000e+00], [5.6052e-44, 2.1084e-44, 0.0000e+00]]) tensor([1., 2., 3.]) tensor([[1., 2.], [3., 4.]])
总的来说,torch.tensor
和 torch.Tensor
的使用方法有所不同,前者更加灵活,可以接受多种类型的输入,并返回新的张量对象;后者则主要用于创建空的张量对象。