PyTorch 超全资源列表,看这篇就够了

PyTorch 如今已经称为最受欢迎的深度学习框架之一了!丰富的 PyTorch 教程,完备的 PyTorch 学习路线往往能帮助我们事半功倍!

今天给大家推荐一个比较完备的 PyTorch 资源列表,内容涉及 PyToch 基本知识,PyToch 在 CV、NLP 领域的应用,PyTorch 教程、PyTorch 相关论文等。

首先放上该项目地址:

https://github.com/bharathgs/Awesome-pytorch-list

该项目非常受欢迎,目前已经收获了 6000+ 的 stars 了。

资源列表:

  • Pytorch & related libraries
    • NLP & Speech Processing
    • Computer Vision

    • Probabilistic/Generative Libraries

    • Other libraries

  • Tutorials & examples

  • Paper implementations

  • Pytorch elsewhere

下面,我们来分别介绍这份 PyTorch 资源。

PyTorch & related libraries

这部分主要介绍了 PyTorch 及相关的库函数。

1. NLP & Speech Processing

这部分主要介绍 PyTorch 在自然语言处理 NLP 领域的应用及其相关资源,总共包含了 33 份资料。

涉及的内容包括:seq2seq, speech, quick-nlp 等。不仅包含了 PyToch 在 NLP 的快速入门,也包含了最新的 BERT 的 PyTorch 实现。

2. Computer Vision

这部分主要介绍 PyTorch 在计算机视觉 CV 领域的应用及其相关资源,总共包含了 18 份资料。

内容上涉及了近年来 CV 领域非常火热的研究,如经典的 LSTM 的 PyTorch 实现,流行的 face-alignment 等。

3. Probabilistic/Generative Libraries

这部分主要介绍 PyTorch 一些概率/生成库,总共包含了 8 份资料。

4. Other libraries

这部分主要介绍 PyTorch 其它的一些库,总共包含了 101 份资料,非常全面。

这部分可以当作字典来用,平时需要使用到 PyTorch 的一些其它相关库,可在这里查询。

Tutorials & examples

这部分是硬核内容,专门讲了 PyTorch 额详细教程并配备相关的实例。总共包含了 58 份资源。

例如 pytorch-tutorial,这里获星 10k+。从 PyTorch 的基础语法知识、张量介绍起,然后是简单的实例、进阶实例等。整个教程学习梯度清晰,难易程度适中,便于进阶提升。

下面是使用 PyTorch 实现一个线性回归的简单例子:

import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt


# Hyper-parameters
input_size = 1
output_size = 1
num_epochs = 60
learning_rate = 0.001

# Toy dataset
x_train = np.array([[3.3], [4.4], [5.5], [6.71], [6.93], [4.168],
[9.779], [6.182], [7.59], [2.167], [7.042],
[10.791], [5.313], [7.997], [3.1]], dtype=np.float32)

y_train = np.array([[1.7], [2.76], [2.09], [3.19], [1.694], [1.573],
[3.366], [2.596], [2.53], [1.221], [2.827],
[3.465], [1.65], [2.904], [1.3]], dtype=np.float32)

# Linear regression model
model = nn.Linear(input_size, output_size)

# Loss and optimizer
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)

# Train the model
for epoch in range(num_epochs):
# Convert numpy arrays to torch tensors
inputs = torch.from_numpy(x_train)
targets = torch.from_numpy(y_train)

# Forward pass
outputs = model(inputs)
loss = criterion(outputs, targets)

# Backward and optimize
optimizer.zero_grad()
loss.backward()
optimizer.step()

if (epoch+1) % 5 == 0:
print ('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))

# Plot the graph
predicted = model(torch.from_numpy(x_train)).detach().numpy()
plt.plot(x_train, y_train, 'ro', label='Original data')
plt.plot(x_train, predicted, label='Fitted line')
plt.legend()
plt.show()

# Save the model checkpoint
torch.save(model.state_dict(), 'model.ckpt')

下面是使用 PyTorch 实现一个 CNN 模型的稍复杂例子:

import torch
import torch.nn as nn
import torchvision
import torchvision.transforms as transforms


# Device configuration
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')

# Hyper parameters
num_epochs = 5
num_classes = 10
batch_size = 100
learning_rate = 0.001

# MNIST dataset
train_dataset = torchvision.datasets.MNIST(root='../../data/',
train=True,
transform=transforms.ToTensor(),
download=True)

test_dataset = torchvision.datasets.MNIST(root='../../data/',
train=False,
transform=transforms.ToTensor())

# Data loader
train_loader = torch.utils.data.DataLoader(dataset=train_dataset,
batch_size=batch_size,
shuffle=True)

test_loader = torch.utils.data.DataLoader(dataset=test_dataset,
batch_size=batch_size,
shuffle=False)

# Convolutional neural network (two convolutional layers)
class ConvNet(nn.Module):
def __init__(self, num_classes=10):
super(ConvNet, self).__init__()
self.layer1 = nn.Sequential(
nn.Conv2d(1, 16, kernel_size=5, stride=1, padding=2),
nn.BatchNorm2d(16),
nn.ReLU(),
nn.MaxPool2d(kernel_size=2, stride=2))
self.layer2 = nn.Sequential(
nn.Conv2d(16, 32, kernel_size=5, stride=1, padding=2),
nn.BatchNorm2d(32),
nn.ReLU(),
nn.MaxPool2d(kernel_size=2, stride=2))
self.fc = nn.Linear(7*7*32, num_classes)

def forward(self, x):
out = self.layer1(x)
out = self.layer2(out)
out = out.reshape(out.size(0), -1)
out = self.fc(out)
return out

model = ConvNet(num_classes).to(device)

# Loss and optimizer
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)

# Train the model
total_step = len(train_loader)
for epoch in range(num_epochs):
for i, (images, labels) in enumerate(train_loader):
images = images.to(device)
labels = labels.to(device)

# Forward pass
outputs = model(images)
loss = criterion(outputs, labels)

# Backward and optimize
optimizer.zero_grad()
loss.backward()
optimizer.step()

if (i+1) % 100 == 0:
print ('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}' 
.format(epoch+1, num_epochs, i+1, total_step, loss.item()))

# Test the model
model.eval() # eval mode (batchnorm uses moving mean/variance instead of mini-batch mean/variance)
with torch.no_grad():
correct = 0
total = 0
for images, labels in test_loader:
images = images.to(device)
labels = labels.to(device)
outputs = model(images)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()

print('Test Accuracy of the model on the 10000 test images: {} %'.format(100 * correct / total))

# Save the model checkpoint
torch.save(model.state_dict(), 'model.ckpt')

Paper implementations

这部分的内容很难得,主要收集了使用 PyTorch 实现的各种深度学习相关论文,节约了大家收集、查找论文的时间。这部分总共包含了 316 份资源。

例如有趣的 BigGAN-PyTorch,论文地址:

https://arxiv.org/abs/1809.11096

Pytorch elsewhere

这部分资源主要收集了关于 PyTorch 的其它内容,总共包含了 35 份资料。

最后,希望这份资源对你有所帮助!

猜你喜欢

转载自blog.csdn.net/c710473510/article/details/89458515