1. 程式人生 > >深度學習-72: PyTorch的架構、模型、視覺化和案例庫

深度學習-72: PyTorch的架構、模型、視覺化和案例庫

深度學習-72: PyTorch的架構、模型、視覺化和案例庫

深度學習原理與實踐(開源圖書)-總目錄,建議收藏,告別碎片閱讀!

文字介紹PyTorch的架構,PyTorch內建資料集,PyTorch內建模型、PyTorch的視覺化支援和相關線上資源。PyTorch(Caffe2)通過混合前端,分散式訓練以及工具和庫生態系統實現快速,靈活的實驗和高效生產。PyTorch 和 TensorFlow 具有不同計算圖實現形式,TensorFlow 採用靜態圖機制(預定義後再使用),PyTorch採用動態圖機制(執行時動態定義)。

1 PyTorch的架構

PyTorch(Caffe2)

通過混合前端,分散式訓練以及工具和庫生態系統實現快速,靈活的實驗和高效生產。PyTorch 和 TensorFlow 具有不同計算圖實現形式,TensorFlow 採用靜態圖機制(預定義後再使用),PyTorch採用動態圖機制(執行時動態定義)。PyTorch具有以下高階特徵:

  • 混合前端:新的混合前端在急切模式下提供易用性和靈活性,同時無縫轉換到圖形模式,以便在C ++執行時環境中實現速度,優化和功能。
  • 分散式訓練:通過利用本地支援集合操作的非同步執行和可從Python和C ++訪問的對等通訊,優化了效能。
  • Python優先: PyTorch為了深入整合到Python中而構建的,因此它可以與流行的庫和Cython和Numba等軟體包一起使用。
  • 豐富的工具和庫:活躍的研究人員和開發人員社群建立了豐富的工具和庫生態系統,用於擴充套件PyTorch並支援從計算機視覺到強化學習等領域的開發。
  • 本機ONNX支援:以標準ONNX(開放式神經網路交換)格式匯出模型,以便直接訪問與ONNX相容的平臺,執行時,視覺化工具等。
  • C++前端:C++前端是PyTorch的純C++介面,它遵循已建立的Python前端的設計和體系結構。它旨在實現高效能,低延遲和裸機C++應用程式的研究。
  • 使用GPU和CPU優化的深度學習張量庫。

PyTorch支援多平臺(GPU/GPU/OS)
圖-X PyTorch支援多平臺(GPU/GPU/OS)

2 Torch內建資料集

Torch的內建資料集都是torch.utils.data.Dataset的子類,即它們實現了__getitem__和__len__方法。 因此,它們都可以傳遞給torch.utils.data.DataLoader,它可以使用torch.multiprocessing worker並行載入多個樣本。

Torch的內建資料集非常豐富,torchvision.datasets

class torchvision.datasets.MNIST(root, train=True, transform=None, target_transform=None, download=False)
class torchvision.datasets.FashionMNIST(root, train=True, transform=None, target_transform=None, download=False)
class torchvision.datasets.EMNIST(root, split, **kwargs)
class torchvision.datasets.CocoCaptions(root, annFile, transform=None, target_transform=None)
class torchvision.datasets.CocoDetection(root, annFile, transform=None, target_transform=None)
class torchvision.datasets.LSUN(root, classes='train', transform=None, target_transform=None)
class torchvision.datasets.ImageFolder(root, transform=None, target_transform=None, loader=)
class torchvision.datasets.DatasetFolder(root, loader, extensions, transform=None, target_transform=None)
class torchvision.datasets.CIFAR10(root, train=True, transform=None, target_transform=None, download=False)
class torchvision.datasets.CIFAR100(root, train=True, transform=None, target_transform=None, download=False)
class torchvision.datasets.STL10(root, split='train', transform=None, target_transform=None, download=False)
class torchvision.datasets.SVHN(root, split='train', transform=None, target_transform=None, download=False)
class torchvision.datasets.PhotoTour(root, name, train=True, transform=None, download=False)

3 Torch內建模型

torchvision.models模型包含以下模型體系結構的定義:

  • AlexNet
  • VGG
  • ResNet
  • SqueezeNet
  • DenseNet
  • Inception v3

PyTorch引擎的torchvision.models提供了很多知名的模型,並且提供了預先訓練的版本。通過傳遞pretrained = True來構造預先訓練的模型版本。

import torchvision.models as models
resnet18 = models.resnet18(pretrained=True)
alexnet = models.alexnet(pretrained=True)
squeezenet = models.squeezenet1_0(pretrained=True)
vgg16 = models.vgg16(pretrained=True)
densenet = models.densenet161(pretrained=True)
inception = models.inception_v3(pretrained=True)

也可以使用torch.utils.model_zoo載入線上儲存的網路模型

state_dict = torch.utils.model_zoo.load_url('https://s3.amazonaws.com/pytorch/models/resnet18-5c106cde.pth')

4 PyTorch的視覺化支援

facebookresearch/visdom 專案提供了一種靈活的工具,用於建立,組織和共享實時豐富資料的視覺化。Visdom旨在促進(遠端)資料的視覺化,重點是支援科學實驗。

5 線上案例、課程

系列文章

參考文獻