PyTorch 是一个开源的机器学习库,用于应用深度学习。它提供了灵活的架构和动态计算图,使得深度学习的研究和开发变得更加容易。

特性

  • 动态计算图:允许在运行时改变计算图的结构。
  • 易于使用:提供了简单直观的API。
  • 高效:在CPU和GPU上都有很好的性能。
  • 社区支持:拥有一个活跃的社区,提供大量的教程和资源。

安装

要安装PyTorch,请访问官方安装指南

示例

以下是一个简单的PyTorch示例:

import torch
import torch.nn as nn
import torch.optim as optim

# 创建一个简单的神经网络
class SimpleNet(nn.Module):
    def __init__(self):
        super(SimpleNet, self).__init__()
        self.fc1 = nn.Linear(10, 5)
        self.relu = nn.ReLU()
        self.fc2 = nn.Linear(5, 1)

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

# 实例化网络和优化器
net = SimpleNet()
optimizer = optim.SGD(net.parameters(), lr=0.01)

# 假设有一些输入数据和标签
inputs = torch.randn(1, 10)
labels = torch.randn(1, 1)

# 训练网络
optimizer.zero_grad()
outputs = net(inputs)
loss = nn.MSELoss()(outputs, labels)
loss.backward()
optimizer.step()

print('训练完成')

图像识别

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

import torchvision.transforms as transforms
from torchvision import datasets, models, transforms
import torch.nn as nn
import torch.optim as optim

# 加载数据集
transform = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

train_dataset = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=4, shuffle=True)

# 加载预训练模型
model = models.resnet50(pretrained=True)
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, 10)

# 训练模型
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.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 = model(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:5d}] loss: {running_loss / 2000:.3f}')

print('训练完成')

总结

PyTorch是一个功能强大的深度学习库,适合进行各种深度学习任务。如果您对PyTorch感兴趣,可以访问官方文档了解更多信息。


PyTorch Logo