快速了解PyTorch

47 阅读2分钟

PyTorch 是一个非常灵活且强大的深度学习框架,它支持动态计算图,并且在研究和生产环境中都非常受欢迎。下面是使用 PyTorch 的基本步骤:

1. 安装 PyTorch

确保你已经安装了 Python 和 pip。然后可以通过 pip 安装 PyTorch:

pip install torch torchvision torchaudio

2. 导入 PyTorch

在你的 Python 脚本或 Jupyter notebook 中导入 PyTorch 库:

import torch

3. 检查安装

你可以运行一些简单的代码来检查 PyTorch 是否正确安装:

print(torch.__version__)
x = torch.tensor([1.0, 2.0])
print(x)

4. 创建张量

张量是 PyTorch 中的核心数据结构,类似于 NumPy 数组,但提供了 GPU 支持和其他功能:

# 创建一个张量
x = torch.tensor([[1., -1.], [1., 1.]])
print(x)

# 创建一个随机张量
y = torch.randn(2, 3)
print(y)

5. 张量操作

PyTorch 提供了大量的张量操作,如加法、乘法等:

# 张量加法
z = x + y
print(z)

# 张量乘法
w = torch.mm(x, y.t())  # 注意这里的转置
print(w)

6. 自动微分

PyTorch 的自动微分功能使得梯度计算变得非常简单:

x = torch.tensor(1.0, requires_grad=True)
y = x * x
y.backward()
print(x.grad)

7. 构建神经网络

使用 torch.nn 模块来创建神经网络层:

import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(2, 10)
        self.fc2 = nn.Linear(10, 1)

    def forward(self, x):
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return x

net = Net()
print(net)

8. 定义损失函数和优化器

选择一个损失函数和优化器:

criterion = nn.MSELoss()
optimizer = torch.optim.SGD(net.parameters(), lr=0.01)

9. 训练模型

加载数据并训练模型:

# 示例数据
X_train = torch.tensor([[0.0, 0.0], [1.0, 0.0], [0.0, 1.0], [1.0, 1.0]], dtype=torch.float32)
y_train = torch.tensor([0.0, 1.0, 1.0, 0.0], dtype=torch.float32).view(-1, 1)

# 训练循环
for epoch in range(100):
    optimizer.zero_grad()   # 清除梯度
    outputs = net(X_train)
    loss = criterion(outputs, y_train)
    loss.backward()         # 反向传播
    optimizer.step()        # 更新权重
    if (epoch+1) % 10 == 0:
        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, 100, loss.item()))

10. 测试模型

使用模型进行预测:

with torch.no_grad():
    inputs = torch.tensor([[0.0, 0.0], [1.0, 1.0]], dtype=torch.float32)
    outputs = net(inputs)
    predicted = (outputs > 0.5).float()
    print(predicted)