撒花!PyTorch 官方教程中文版正式上線,激動人心的大好事!

紅色石頭發表於2019-10-08

什麼是 PyTorch?其實 PyTorch 可以拆成兩部分:Py+Torch。Py 就是 Python,Torch 是一個有大量機器學習演算法支援的科學計算框架。PyTorch 的前身是Torch,但是 Torch 是基於 Lua 語言。Lua 簡潔高效,但由於其過於小眾,用的人不是很多,以至於很多人聽說要掌握 Torch 必須新學一門語言就望而卻步。考慮到 Python 在人工智慧領域的領先地位,以及其生態完整性和介面易用性,幾乎任何框架都不可避免地要提供 Python 介面。終於,在 2017 年,Torch 的幕後團隊使用 Python 重寫了 Torch 的很多內容,推出了 PyTorch,並提供了 Python 介面。此後,PyTorch 成為最流行的深度學習框架之一。

近幾年來,PyTorch 呈現大火的趨勢,除了Facebook外,PyTorch 已經被 Twitter、CMU 和 Salesforce 等多個機構使用。

就在剛剛,激動人心的好訊息:PyTorch 官方教程中文版正式釋出啦!

教程地址:

http://pytorch123.com/

教程介紹

本文件主要使用於 PyTorch 入門學者,主要參考 PyTorch 官方文件。官方教程包含了 PyTorch 介紹,安裝教程;60 分鐘快速入門教程,可以迅速從小白階段完成一個分類器模型;計算機視覺常用模型,方便基於自己的資料進行調整,不再需要從頭開始寫;自然語言處理模型,聊天機器人,文字生成等生動有趣的專案。

總而言之:如果你想了解一下 PyTorch,可以看介紹部分。如果你想快速入門 PyTorch,可以看 60 分鐘快速入門。如果你想解決計算機視覺問題,可以看 CV 部分。如果你想解決自然語言處理問題,可以看 NLP 部分。

教程內容

整個教程共包含了 7 部分,內容由簡單到複雜,適合不同層次的學習要求。下面分別進行介紹。

1. PyTorch 之簡介與下載

  • PyTorch 簡介
  • PyTorch 環境搭建
    • 安裝 Anaconda 3.5
    • 安裝 PyTorch & torchvision

2. PyTorch 之 60min 入門教程

  • PyTorch 入門
  • PyTorch 自動微分
  • PyTorch 神經網路
  • PyTorch 影像分類器
  • PyTorch 資料並處理

原理解釋:

3. PyTorch 之入門強化教程

  • 資料載入和處理
  • PyTorch 小試牛刀
  • 遷移學習
  • 混合前端的 seq2seq 模型部署
  • 儲存和載入模型

def train_model(model, criterion, optimizer, scheduler, num_epochs=25):
    since = time.time()

    best_model_wts = copy.deepcopy(model.state_dict())
    best_acc = 0.0

    for epoch in range(num_epochs):
        print('Epoch {}/{}'.format(epoch, num_epochs - 1))
        print('-' * 10)

        # 每個epoch都有一個訓練和驗證階段
        for phase in ['train', 'val']:
            if phase == 'train':
                scheduler.step()
                model.train() # Set model to training mode
            else:
                model.eval() # Set model to evaluate mode

            running_loss = 0.0
            running_corrects = 0

            # 迭代資料.
            for inputs, labels in dataloaders[phase]:
                inputs = inputs.to(device)
                labels = labels.to(device)

                # 零引數梯度
                optimizer.zero_grad()

                # 前向
                # track history if only in train
                with torch.set_grad_enabled(phase == 'train'):
                    outputs = model(inputs)
                    _, preds = torch.max(outputs, 1)
                    loss = criterion(outputs, labels)

                    # 後向+僅在訓練階段進行最佳化
                    if phase == 'train':
                        loss.backward()
                        optimizer.step()

                # 統計
                running_loss += loss.item() * inputs.size(0)
                running_corrects += torch.sum(preds == labels.data)

            epoch_loss = running_loss / dataset_sizes[phase]
            epoch_acc = running_corrects.double() / dataset_sizes[phase]

            print('{} Loss: {:.4f} Acc: {:.4f}'.format(
                phase, epoch_loss, epoch_acc))

            # 深度複製mo
            if phase == 'val' and epoch_acc > best_acc:
                best_acc = epoch_acc
                best_model_wts = copy.deepcopy(model.state_dict())

        print()

    time_elapsed = time.time() - since
    print('Training complete in {:.0f}m {:.0f}s'.format(
        time_elapsed // 60, time_elapsed % 60))
    print('Best val Acc: {:4f}'.format(best_acc))

    # 載入最佳模型權重
    model.load_state_dict(best_model_wts)
    return model

4. PyTorch 之影像篇

  • 微調基於 torchvision 0.3的目標檢測模型
  • 微調 Torchvision 模型
  • 空間變換器網路
  • 使用 PyTorch 進行 Neural-Transfer
  • 生成對抗示例
  • 使用ONNX將模型轉移至Caffe2和移動端

5. PyTorch 之文字篇

  • 聊天機器人教程
  • 使用字元級 RNN 生成名字
  • 使用字元級 RNN 進行名字分類
  • 在深度學習和 NLP 中使用 Pytorch
  • 使用 Sequence2Sequence 網路和注意力進行翻譯

> hello?
Bot: hello .
> where am I?
Bot: you re in a hospital .
> who are you?
Bot: i m a lawyer .
> how are you doing?
Bot: i m fine .
> are you my friend?
Bot: no .
> you're under arrest
Bot: i m trying to help you !
> i'm just kidding
Bot: i m sorry .
> where are you from?
Bot: san francisco .
> it's time for me to leave
Bot: i know .
> goodbye
Bot: goodbye .

6. PyTorch 之生成對抗網路

  • DCGAN教程

本教程透過一個例子來對 DCGANs 進行介紹。我們將會訓練一個生成對抗網路(GAN)用於在展示了許多真正的名人的圖片後產生新的名人。

7. PyTorch 之強化學習

  • 強化學習(DQN)教程

本教程介紹如何使用PyTorch從OpenAI Gym中的 CartPole-v0 任務上訓練一個Deep Q Learning (DQN) 代理。

總的來說,這是一份非常不錯的 PyTorch 中文教程!最後,再次附上教程線上網址:

http://pytorch123.com/


相關文章