PyTorch 超全資源列表,看這篇就夠了!

2021-03-02 AI有道

點擊上方「AI有道」,選擇「置頂」公眾號

重磅乾貨,第一時間送達

PyTorch 如今已經稱為最受歡迎的深度學習框架之一了!豐富的 PyTorch 教程,完備的 PyTorch 學習路線往往能幫助我們事半功倍!

今天給大家推薦一個比較完備的 PyTorch 資源列表,內容涉及 PyToch 基本知識,PyToch 在 CV、NLP 領域的應用,PyTorch 教程、PyTorch 相關論文等。

首先放上該項目地址:

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

該項目非常受歡迎,目前已經收穫了 6000+ 的 stars 了。

資源列表:

下面,我們來分別介紹這份 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 的一些其它相關庫,可在這裡查詢。

這部分是硬核內容,專門講了 PyTorch 額詳細教程並配備相關的實例。總共包含了 58 份資源。

例如 pytorch-tutorial,這裡獲星 10k+。從 PyTorch 的基礎語法知識、張量介紹起,然後是簡單的實例、進階實例等。整個教程學習梯度清晰,難易程度適中,便於進階提升。

下面是使用 PyTorch 實現一個線性回歸的簡單例子:

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



input_size = 1
output_size = 1
num_epochs = 60
learning_rate = 0.001


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)


model = nn.Linear(input_size, output_size)


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


for epoch in range(num_epochs):

inputs = torch.from_numpy(x_train)
targets = torch.from_numpy(y_train)


outputs = model(inputs)
loss = criterion(outputs, targets)


optimizer.zero_grad()
loss.backward()
optimizer.step()

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


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()


torch.save(model.state_dict(), 'model.ckpt')

下面是使用 PyTorch 實現一個 CNN 模型的稍複雜例子:

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



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


num_epochs = 5
num_classes = 10
batch_size = 100
learning_rate = 0.001


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())


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)


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)


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


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)


outputs = model(images)
loss = criterion(outputs, labels)


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()))


model.eval()
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))


torch.save(model.state_dict(), 'model.ckpt')

這部分的內容很難得,主要收集了使用 PyTorch 實現的各種深度學習相關論文,節約了大家收集、查找論文的時間。這部分總共包含了 316 份資源。

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

https://arxiv.org/abs/1809.11096

這部分資源主要收集了關於 PyTorch 的其它內容,總共包含了 35 份資料。

最後,希望這份資源對你有所幫助!

相關焦點

  • PyTorch 超全資源列表,看這篇就夠了
    今天給大家推薦一個比較完備的 PyTorch 資源列表,內容涉及 PyToch 基本知識,PyToch 在 CV、NLP 領域的應用,PyTorch 教程、PyTorch 相關論文等。資源列表:下面,我們來分別介紹這份 PyTorch 資源。
  • 庫、教程、論文實現,這是一份超全的PyTorch資源列表(Github 2.2K星)
    機器之心發現了一份極棒的 PyTorch 資源列表,該列表包含了與 PyTorch 相關的眾多庫、教程與示例、論文實現以及其他資源。
  • Github 2.2K星的超全PyTorch資源列表
    ,該列表包含了與 PyTorch 相關的眾多庫、教程與示例、論文實現以及其他資源。從難易程度上看,它們首先介紹了如何入門 PyTorch 這一個框架,並使用 MNIST 等簡單數據集展示了一般搭建模型的方法,這些都非常適合初學者入門機器學習。其次會有一些練習題及示例腳本,這些資源可以幫助更好地理解機器學習與 PyTorch 框架。最後就是一些具體任務與模型架構的實現,例如基於 ImageNet 實現 Inception_v3 或 ResNet_50 等。
  • awesome-adversarial-machine-learning資源列表
    發現一個不錯的awesome-adversarial-machine-learning的資源列表,有需要的同學可以查看訪問:
  • 搞懂Transformer結構,看這篇PyTorch實現就夠了
    所以我們為此文章寫了篇註解文檔,並給出了一行行實現的Transformer的代碼。本文檔刪除了原文的一些章節並進行了重新排序,並在整個文章中加入了相應的註解。此外,本文檔以Jupyter notebook的形式完成,本身就是直接可以運行的代碼實現,總共有400行庫代碼,在4個GPU上每秒可以處理27,000個tokens。
  • 一個Seq2seq模型的Pytorch實現庫
    學校 | 哈爾濱工業大學 SCIR實驗室博士生在讀註:文末附【深度學習與自然語言處理】交流群介紹一個Seq2seq模型的實現tutorial,使用pytorch+295篇ACL2019有代碼開源的論文。
  • Python 3 入門,看這篇就夠了(超全整理)
    # 這是單行注釋'''這是多行注釋這是多行注釋'''"""這也是多行注釋這也是多行注釋"""行與縮進Python 最具特色的就是使用縮進來表示代碼塊,不需要使用大括號 {}。它們允許你為某個代碼塊賦予名字,允許你通過這一特殊的名字在你的程序任何地方來運行代碼塊,並可重複任何次數。這就是所謂的調用(Calling)函數。函數代碼塊以 def 關鍵詞開頭,後接函數標識符名稱和圓括號 ()。任何傳入參數和自變量必須放在圓括號中間,圓括號之間可以用於定義參數。函數的第一行語句可以選擇性地使用文檔字符串—用於存放函數說明。
  • pytorch專題前言 | 為什麼要學習pytorch?
    2.為什麼要學習pytorch呢?3.學習了pytorch我怎麼應用呢?4.按照什麼順序去學習pytorch呢?5.網上那麼多資料如何選擇呢?現在開始逐一的對以上問題提出自己的看法,可能想的不夠周全,歡迎討論區一起探討!1.生物學科的朋友需要學編程麼?需要!
  • 《PyTorch中文手冊》開源!附資源下載連結!
    今天我們強烈推薦一本中文 PyTorch 書籍 ——PyTorch 中文手冊 (pytorch handbook)。這是一本開源的書籍,目標是幫助那些希望和使用 PyTorch 進行深度學習開發和研究的朋友快速入門,其中包含的 Pytorch 教程全部通過測試保證可以成功運行。2.
  • 新手必備 | 史上最全的PyTorch學習資源匯總
    PyTorch的學習資源,非常適合新手學習,建議大家收藏。(3)這是一個比較偏算法實戰的PyTorch代碼教程,在github上有很高的star,https://github.com/yunjey/pytorch-tutorial。建議大家在閱讀本文檔之前,先學習上述兩個PyTorch基礎教程。(4)接下來為大家介紹一本開源書籍:https://github.com/zergtant/pytorch-handbook。
  • 【乾貨】史上最全的PyTorch學習資源匯總
    資源整理自網絡,原文地址:https://github.com/INTERMT/Awesome-PyTorch-Chinese目錄            · PyTorch學習教程、手冊            · PyTorch視頻教程
  • 輕鬆構建 PyTorch 生成對抗網絡(GAN)
    展現在您眼前的這幅圖像中的人物並非自真實存在,其實她是由一個機器學習模型創造出來的虛擬人物。圖片取自 維基百科的 GAN 條目,畫面細節豐富、色彩逼真,讓人印象深刻。主要內容課題及方案概覽模型的開發環境生成對抗網絡模型模型的訓練和驗證結論與總結課題及方案概覽下面顯示的兩組手寫體數字圖片,您是否能從中夠辨認出由計算機生成的『手寫』字體是其中哪一組?
  • 什麼值得看 | 最新論文、硬核項目、優質資源!
    https://keras.io/examples/keras_recipes/bayesian_neural_networks/[4]Keras實例:Vision Transformer圖像分類: https://keras.io/examples/vision/image_classification_with_vision_transformer/[5]2020年十篇有趣的深度學習
  • NLP-入門實體命名識別(NER)+Bilstm-CRF模型原理Pytorch代碼詳解——最全攻略
    希望能夠以這篇文章為載體,幫助其他跟我一樣的學習者梳理、串起NER的各個小知識點,最後上手NER的主流模型(Bilstm+CRF)(文中講的是pytorch,但是懂了pytorch去看keras十分容易相信我哈)二、主流模型Bilstm-CRF實現詳解(Pytorch篇)一、NER資料參考:NLP之CRF應用篇(序列標註任務)(CRF++的詳細解析、Bi-LSTM+CRF
  • 【NER】NLP-入門實體命名識別(NER)+Bilstm-CRF模型原理Pytorch代碼詳解——最全攻略
    希望能夠以這篇文章為載體,幫助其他跟我一樣的學習者梳理、串起NER的各個小知識點,最後上手NER的主流模型(Bilstm+CRF)(文中講的是pytorch,但是懂了pytorch去看keras十分容易相信我哈)全文結構:一、NER資料(主要介紹NER)二、主流模型Bilstm-CRF實現詳解(Pytorch篇)三、實現代碼的拓展(在第二點的基礎上進行拓展
  • PyTorch常見的12坑
    這是因為上面表達式的右側原本是一個Python浮點數,而它現在是一個零維張量。因此,總損失累加了張量和它們的梯度歷史,這可能會產生很大的autograd 圖,耗費內存和計算資源。 3.7. pytorch的可重複性問題參考這篇博文:https://blog.csdn.net/hyk_1996/article/details/84307108 8. 多GPU的處理機制使用多GPU時,應該記住pytorch的處理邏輯是:1.在各個GPU上初始化模型。2.前向傳播時,把batch分配到各個GPU上進行計算。
  • PyTorch 中文教程最新版
    其中,PyTorch 是當前難得的簡潔優雅且高效快速的框架,當前開源的框架中,沒有哪一個框架能夠在靈活性、易用性、速度這三個方面有兩個能同時超過 PyTorch。本文檔的定位是 PyTorch 入門教程,主要針對想要學習 PyTorch 的學生群體或者深度學習愛好者。
  • SEO入門知識點,看這篇就夠了
    首先,讓我們先來看看這兩本書的邏輯體系,帶著方向去閱讀這書本重點看站內篇、站外篇、策略篇部分,這三個部分主要講做優化的實際方法論,基礎篇就是了解大致常識,可以快速瀏覽,可以和案例篇專題篇組合來看。這本書主要看關鍵詞、連結優化技巧,理解和了解網絡技術和百度的競價推廣、網盟推廣。接下來,梳理下SEO的基本常識(不完全的部分會在後續補充)1.
  • 【乾貨】基於pytorch的CNN、LSTM神經網絡模型調參小結
    這篇文章總結一下最近一段時間遇到的問題、處理方法和相關策略,以及經驗(其實並沒有什麼經驗)等,白菜一枚。對於沒有學習過pytorch的初學者,可以先看一下官網發行的60分鐘入門pytorch,參考地址 :http://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html卷積神經網絡CNN理解參考(https://www.zybuluo.com/hanbingtao/note/485480)
  • pytorch學習筆記(2):在 MNIST 上實現一個 cnn
    在前面我要先說一下,這個系列是為了讓大家對 pytorch 從入門到熟悉,對於 deep learning 相關的知識我們不會花費過多的內容去介紹。如果大家對一些 DL 的基礎相關知識不懂的話,推薦幾個資源去學習:所以我們在筆記中對於一些相關的知識就不做深入介紹了。