Tensors 类似于 NumPy 的 ndarrays ,同时 Tensors 可以使用 GPU 进行计算。
创建Tensor:可以通过torch.tensor()
函数从Python列表或NumPy数组创建Tensor
。也可以使用torch.ones()
、torch.zeros()
等函数创建特定大小和形状的Tensor
。
import torch
# 从列表创建Tensor
a = torch.tensor([1, 2, 3, 4, 5])
# 创建大小为(3, 4)的全零Tensor
b = torch.zeros(3, 4)
# 从NumPy数组创建Tensor
import numpy as np
np_array = np.array([[1, 2, 3], [4, 5, 6]])
c = torch.tensor(np_array)
Tensor的属性:Tensor
具有dtype
(数据类型)和device
(存储设备)等属性。
a = torch.tensor([1, 2, 3, 4, 5])
print(a.dtype) # 输出: torch.int64
print(a.device) # 输出: cpu
Tensor的运算:可以像NumPy数组一样进行加减乘除等数学运算,也可以使用PyTorch提供的函数进行操作。
a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])
c = a + b # 对应元素相加
print(c) # 输出: tensor([5, 7, 9])
Tensor和NumPy数组的转换:可以使用.numpy()
方法将Tensor转换为NumPy数组,也可以使用torch.from_numpy()
函数将NumPy数组转换为Tensor。
import numpy as np
a = torch.tensor([1, 2, 3])
np_array = a.numpy() # Tensor转为NumPy数组
Tensor的形状操作:可以使用.reshape()
方法改变Tensor的形状,也可以使用.view()
方法进行类似的操作。
a = torch.tensor([[1, 2], [3, 4]])
b = a.view(4) # 将形状改为(4,)
Tensor的广播:当对两个形状不同的Tensor进行运算时,PyTorch会自动进行广播,使得它们的形状相容。
a = torch.tensor([[1, 2, 3], [4, 5, 6]])
b = torch.tensor([10, 20, 30])
c = a + b # 自动广播b使其形状与a相同
Tensor的梯度追踪:PyTorch的Tensor可以自动追踪计算图,并且支持自动求导。
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
y = x**2
z = y.sum()
z.backward() # 对z求导
print(x.grad) # 输出: tensor([2., 4., 6.])