PyTorch 是一个开源的机器学习库,用于应用深度学习。以下是一些关于 PyTorch 的文档和资源。

安装指南

首先,确保你已经安装了 Python。然后,可以通过以下命令安装 PyTorch:

pip install torch torchvision

快速开始

如果你是 Python 开发者,以下是一个简单的 PyTorch 示例:

import torch


x = torch.randn(5, 1)
y = torch.randn(5, 1)

# 定义一个线性层
linear = torch.nn.Linear(1, 1)

# 前向传播
output = linear(x)

# 计算损失
loss = torch.nn.functional.mse_loss(output, y)

# 反向传播和优化
optimizer = torch.optim.SGD(linear.parameters(), lr=0.01)
optimizer.zero_grad()
loss.backward()
optimizer.step()

图像识别

PyTorch 在图像识别领域有广泛的应用。以下是一个使用 PyTorch 进行图像分类的简单示例:

# 导入必要的库
import torch
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
from torch import nn, optim

# 数据预处理
transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5,), (0.5,))
])

# 加载数据集
train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)

# 定义网络
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(1, 20, 5)
        self.pool = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(20, 50, 5)
        self.fc1 = nn.Linear(4*4*50, 500)
        self.fc2 = nn.Linear(500, 10)

    def forward(self, x):
        x = self.pool(torch.relu(self.conv1(x)))
        x = self.pool(torch.relu(self.conv2(x)))
        x = x.view(-1, 4*4*50)
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

# 实例化网络和优化器
net = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

# 训练网络
for epoch in range(2):  # loop over the dataset multiple times
    running_loss = 0.0
    for i, data in enumerate(train_loader, 0):
        inputs, labels = data
        optimizer.zero_grad()
        outputs = net(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
        if i % 2000 == 1999:    # print every 2000 mini-batches
            print(f'[{epoch + 1}, {i + 1}] loss: {running_loss / 2000:.3f}')
            running_loss = 0.0

print('Finished Training')

社区与资源

PyTorch 有一个活跃的社区,你可以在这里找到更多资源和帮助:

PyTorch Logo