獨家 | 教你使用torchlayers 來構建PyTorch 模型(附連結)

2021-01-18 數據派THU

本文約1200字,建議閱讀5分鐘

本文介紹了torchlayers。torchlayers 旨在做Keras為TensorFlow所做的事情,它提供了更高級的模型構建的API和一些方便的默認值以及附加功能,這些功能對構建PyTorch神經網絡很有用。通過在線搜索的趨勢判斷(連結:https://trends.google.com/trends/explore?date=today%205-y&geo=US&q=%2Fg%2F11gd3905v1),PyTorch繼續受到人們的普遍關注,更重要的是,PyTorch的使用率在不斷提高(連結:https://www.kdnuggets.com/2020/01/openai-pytorch-adoption.html)。PyTorch被認為具有強大而靈活的特點,這些特點讓其受到了研究者的歡迎。然而,PyTorch過去因缺乏簡化的高級API(例如TensorFlow的Keras) 常常受到從業者的批評。但是這種情況最近已經改變了。

torchlayers(見下面連結) 旨在為PyTorch做Keras給TensorFlow所做的事情。這個項目的開發者簡潔地定義了它:torchlayers是一個基於PyTorch的庫,提供了torch.nn層的形狀和維度的自動推斷以及當前最好的網絡結構(例如Efficient-Net)中的構建塊。

附連結:

https://github.com/szymonmaszke/torchlayers

與Keras中的操作類似,上述的操作不需要用戶幹預(除了調用一次torchlayers.build)。除了上面提到的形狀和維度的推斷,torchlayers 還包括其他類似Keras的層,例如 torchlayers.Reshape(在改變輸入張量形狀的同時,保留了批量的維度,見下面連結1),包括之前在 ImageNet 競賽中見過的最好的層(比如 PloyNet,見下面連結2)。此外,它還提供了一些有用的默認值,例如卷積核的大小(torchlayers的默認值是3)。連結1:https://szymonmaszke.github.io/torchlayers/packages/torchlayers.html?highlight=reshape#torchlayers.Reshape連結2:https://szymonmaszke.github.io/torchlayers/packages/torchlayers.convolution.html?highlight=polynet#torchlayers.convolution.Poly
pip install --user torchlayers  

其他的安裝信息(關於Docker 鏡像和GPU)可從這裡獲取(連結:https://szymonmaszke.github.io/torchlayers/#installation)。完整的torchlayers文檔可這裡獲取(連結:https://szymonmaszke.github.io/torchlayers/)。torchlayers 的GitHub 主頁提供了一些例子來展示它的一些功能。我喜歡這個圖像和文本分類二合一的例子(見下面連結)!我在下面附上了代碼,這例子展示了:

torch.nn 和 torchlayers 層的混合使用

形狀和維度推斷(卷積、線性輸入和BatchNorm)

默認的卷積核v大小

卷積的填充默認為 「same」

torchlayers池化層的使用(和Keras 相似,全局最大池化)

https://github.com/szymonmaszke/torchlayers#simple-image-and-text-classifier-in-one
import torch  import torchlayers as tl    # torch.nn and torchlayers can be mixed easily   model = torch.nn.Sequential(      tl.Conv(64),                   # specify ONLY out_channels      torch.nn.ReLU(),               # use torch.nn wherever you wish      tl.BatchNorm(),                # BatchNormNd inferred from input      tl.Conv(128),                  # Default kernel_size equal to 3      tl.ReLU(),      tl.Conv(256, kernel_size=11),  # "same" padding as default      tl.GlobalMaxPool(),            # Known from Keras      tl.Linear(10),                 # Output for 10 classes  )  

當指定輸入形狀後(對於上面定義好的模型,圖像和文本分類的輸入形狀如下所示):我們可以用 torchlayers.build(連結:https://szymonmaszke.github.io/torchlayers/packages/torchlayers.html?highlight=build#torchlayers.build)來構建一個已經定義好的網絡。
# Image...  mnist_model = tl.build(model, torch.randn(1, 3, 28, 28))    # ...or text  # [batch, embedding, timesteps], first dimension > 1 for BatchNorm1d to work  text_model = tl.build(model, torch.randn(2, 300, 1))  

build與Keras中的工作機制類似,相當於將模型編譯為PyTorch原語。它通過post_build 函數提供了一些附加功能(例如權重初始化,如下所示),你可以從這個網頁了解更多(連結:https://szymonmaszke.github.io/torchlayers/packages/torchlayers.html?highlight=build#torchlayers.build)。
class _MyModuleImpl(torch.nn.Linear):      def post_build(self):          # You can do anything here really          torch.nn.init.eye_(self.weights)  

torchlayers為使用PyTorch來實現類似Keras的模型構建提供了一些有用的功能,並填補了一個明顯的空白。時間會告訴我們長期來看該項目會如何發展,但這肯定是一個良好的開端。

OpenAI is Adopting PyTorch... They Aren’t Alone

連結:https://www.kdnuggets.com/2020/01/openai-pytorch-adoption.html

Gentle Introduction to PyTorch 1.2 

連結:https://www.kdnuggets.com/2019/09/gentle-introduction-pytorch-12.html

Tokenization and Text Data Preparation with TensorFlow & Keras

連結:https://www.kdnuggets.com/2020/03/tensorflow-keras-tokenization-text-data-prep.html

原文標題:

Build PyTorch Models Easily Using torchlayers

原文連結:

https://www.kdnuggets.com/2020/04/pytorch-models-torchlayers.html

如您想與我們保持交流探討、持續獲得數據科學領域相關動態,包括大數據技術類、行業前沿應用、講座論壇活動信息、各種活動福利等內容,敬請掃碼加入數據派THU粉絲交流群,紅數點恭候各位。

王琦,中國科學院大學研一在讀,研究方向是機器學習與數據挖掘。喜歡探索新事物,是一個熱愛學習的人。 

工作內容:需要一顆細緻的心,將選取好的外文文章翻譯成流暢的中文。如果你是數據科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

你能得到:定期的翻譯培訓提高志願者的翻譯水平,提高對於數據科學前沿的認知,海外的朋友可以和國內技術應用發展保持聯繫,THU數據派產學研的背景為志願者帶來好的發展機遇。

其他福利:來自於名企的數據科學工作者,北大清華以及海外等名校學生他們都將成為你在翻譯小組的夥伴。


點擊文末「閱讀原文」加入數據派團隊~

轉載須知

如需轉載,請在開篇顯著位置註明作者和出處(轉自:數據派ID:DatapiTHU),並在文章結尾放置數據派醒目二維碼。有原創標識文章,請發送【文章名稱-待授權公眾號名稱及ID】至聯繫郵箱,申請白名單授權並按要求編輯。發布後請將連結反饋至聯繫郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。

點擊「閱讀原文」擁抱組織

相關焦點

  • 大數據分析使用torchlayers構建PyTorch模型
    torchlayers的目的是做Keras為TensorFlow做的事情,提供更高級別的模型構建API以及一些方便的默認值和附加組件,這些組件和附加組件可用於製作PyTorch神經網絡。通過在線搜索判斷,PyTorch繼續受到廣泛關注,並且更重要的是,它的採用率不斷提高。
  • 教你用PyTorch實現「看圖說話」(附代碼、學習資源)
    這將會幫助你更深刻地掌握各個主題,成為一名更好的DeepLearning實踐者。這篇文章將和大家一起看一個有趣的多模態主題,我們將結合圖像和文本處理技術來構建一個有用的深度學習應用,即看圖說話(ImageCaptioning)。看圖說話是指從一個圖像中基於其中的對象和動作生成文本描述的過程。例如:
  • Deep CARs:使用Pytorch學習框架實現遷移學習
    本文將介紹一個能識別196種類型汽車的模型。本模型將通過神經網絡來實現目標。更準確地說,是使用一個深度神經網絡,因此得名Deep CARs(深度計算機自動額定值系統)。想要實現這一目標,需要完成兩部分的學習,第1部分:構建汽車分類器;第2部分:部署分類器。本文將著重論述第1部分內容。我們將使用一種叫做遷移學習的方法來訓練分類器。
  • 使用PyTorch建立你的第一個文本分類模型
    使用PyTorch有很多好處,但最重要的兩個是:動態網絡——運行時架構的變化跨gpu的分布式訓練我敢肯定你想知道——為什麼我們要使用PyTorch來處理文本數據?讓我們討論一下PyTorch的一些令人難以置信的特性,這些特性使它不同於其他框架,特別是在處理文本數據時。1. 處理詞彙表外單詞文本分類模型根據固定的詞彙量進行訓練。
  • 如何在PyTorch和TensorFlow中訓練圖像分類模型
    在所有這些行業中,圖像分類都以一種或另一種方式使用。他們是如何做到的呢?他們使用哪個框架?你必須已閱讀很多有關不同深度學習框架(包括TensorFlow,PyTorch,Keras等)之間差異的信息。TensorFlow和PyTorch無疑是業內最受歡迎的框架。我相信你會發現無窮的資源來學習這些深度學習框架之間的異同。
  • 重磅| Torch7團隊開源PyTorch:Python優先的深度學習框架
    官網:http://pytorch.orgGitHub:https://github.com/pytorch/pytorchPyTorch 是一個 Python 軟體包,其提供了兩種高層面的功能:使用強大的 GPU 加速的 Tensor 計算(類似 numpy)構建於基於 tape 的 autograd 系統的深度神經網絡如有需要,你也可以復用你最喜歡的
  • 新版PyTorch 1.2 已發布:功能更多、兼容更全、操作更快!
    highlight=transformer#torch.nn.Transformer),該模塊基於「Attention is All You Need(https://arxiv.org/abs/1706.03762)」這篇論文。nn.Transformer 模塊完全依賴注意力機制來構建輸入和輸出之間的全局依賴關係;該模塊的各個組件經過精心設計,可以獨立使用。
  • PyTorch最佳實踐,教你寫出一手風格優美的代碼
    Jupyter Notebooks VS Python 腳本 一般來說,我們建議使用 Jupyter Notebook 進行初步的探索,或嘗試新的模型和代碼。如果你想在更大的數據集上訓練該模型,就應該使用 Python 腳本,因為在更大的數據集上,復現性更加重要。
  • 還不會使用PyTorch框架進行深度學習的小夥伴,看過來
    為了使用 PyTorch,你需要先訪問其官網並安裝 PyTorch。如果你正在使用 Conda,你可以通過運行以下簡單命令來安裝 PyTorch:為了定義 PyTorch 張量,首先需要導入 torch 包。PyTorch 允許你定義兩種類型的張量,即 CPU 和 GPU 張量。
  • 使用PyTorch進行主動遷移學習:讓模型預測自身的錯誤
    每當為一個特定目的而構建的機器學習模型適應於一個全新的用例時,你都可以感受到同樣的喜悅。如果這個用例碰巧是主動學習,那麼我們將把機器學習中最有趣的部分應用到解決機器學習中最重要的問題中:人類和人工智慧如何一起解決問題?
  • 幾行代碼教你在Pytorch和Python中實現神經風格遷移
    從左到右為:內容圖像、風格圖像、生成的圖像這個方法相當直觀,本文是在pytorch和python中實現神經風格遷移的簡單指南,並預先解釋了這個方法。你的筆畫可能會更粗更有活力,而我的筆畫可能會更細更鈍。這些定義有助於理解目的,但實際上,實現該算法需要更精確的定義。可以使用下面概述的標準圖像分類網絡獲得這些定量定義。卷積神經網絡(CNN)是圖像分類的常用方法。為了進行分類,CNN將圖像作為輸入,並應用一組卷積濾波器、最大池化和非線性激活來給出更密集的輸入圖像表示。
  • 使用PyTorch Lightning構建輕量化強化學習DQN(附完整源碼)
    在這裡,我們將使用經典的倒立擺gym環境來構建一個標準的深度Q網絡(DQN)模型,以說明如何開始使用Lightning來構建RL模型。在本文中,我們將討論:·什麼是lighting以及為什麼要將它應用於RL·標準DQN模型簡介·使用Lightning構建DQN的步驟·結果和結論如果您想直接跳轉到代碼,可以在Pythorch Lightning示例頁面中找到示例,或者通過單擊下面的colab圖標查看交互式colab筆記本!
  • PyTorch中使用DistributedDataParallel進行多GPU分布式模型訓練
    分布式訓練是使用多個GPU和/或多個機器訓練深度學習模型的技術。 分布式訓練作業使您能夠克服單GPU內存瓶頸,通過同時利用多個GPU來開發更大,功能更強大的模型。這篇文章是使用torch.nn.parallel.DistributedDataParallel API在純PyTorch中進行分布式訓練的簡介。
  • 一行代碼即可調用18款主流模型!PyTorch Hub輕鬆解決論文可復現性
    PyTorch Hub包含了一系列與圖像分類、圖像分割、生成以及轉換相關的預訓練模型庫,例如ResNet、BERT、GPT、VGG、PGAN、MobileNet等經典模型,PyTorch Hub試圖以最傻瓜的方式,提高研究工作的復現性。有多簡單呢?圖靈獎得主Yann LeCun發推表示,只需要一行代碼就可以調用所有倉庫裡的模型,通過一個pull請求來發布你自己的模型。
  • DenseNet——CNN經典網絡模型詳解(pytorch實現)
    DenseNet——CNN經典網絡模型詳解(pytorch實現)一個CV小白,寫文章目的為了讓和我意義的小白輕鬆如何,讓大佬鞏固基礎(手動狗頭),大家有任何問題可以一起在評論區留言討論~一、概述論文:Densely Connected Convolutional Networks 論文連結:https://arxiv.org/pdf
  • PyTorch實現TPU版本CNN模型
    隨著深度學習模型在各種應用中的成功實施,現在是時候獲得不僅準確而且速度更快的結果。為了得到更準確的結果,數據的大小是非常重要的,但是當這個大小影響到機器學習模型的訓練時間時,這一直是一個值得關注的問題。為了克服訓練時間的問題,我們使用TPU運行時環境來加速訓練。為此,PyTorch一直在通過提供最先進的硬體加速器來支持機器學習的實現。
  • 視覺工具包torchvision重大更新:支持分割模型、檢測模型
    另外,torchvision還有了不少視覺專用的C++/Cuda算子。消息一出,小夥伴們紛紛奔走相告。現在,來仔細觀察一下,新的torchvision都有哪裡變強了。哪些功能是新來的?至於這些算子怎麼用,官方給出了一些例子:哪些模型是新來的?既然,目標檢測、實例分割,以及人物關鍵點檢測模型的支持,全部是最新加入的。那麼,就來看看增加了哪些模型吧:分割模型官方博客寫到,torchvision 0.3新加入了FCN和DeepLabV3分割模型,用了ResNet50和ResNet101骨架。
  • PyTorch最新:分布式模型並行、Java程序、移動端等多項新功能
    官方提示說,用戶應當開始遷移到 Python3,並使用 C++14 開始編譯工作。對於其他詳細信息,感興趣的讀者可以查閱更新文檔。 更新文檔:https://github.com/pytorch/pytorch/releases 增加多項新特性 在本次版本更新中,PyTorch 最大的變化在於增加了多項新的特性,無疑讓 PyTorch 變得更好用了。
  • 60分鐘入門深度學習工具PyTorch
    https://pytorch.org/tutorials/_downloads/009cea8b0f40dfcb55e3280f73b06cc2/autograd_tutorial.ipynb三、神經網絡可以使用torch.nn包來構建神經網絡
  • PyTorch最新:支持分布式模型並行、Java程序、移動端等多項新功能
    官方提示說,用戶應當開始遷移到 Python3,並使用 C++14 開始編譯工作。對於其他詳細信息,感興趣的讀者可以查閱更新文檔。更新文檔:https://github.com/pytorch/pytorch/releases增加多項新特性在本次版本更新中,PyTorch 最大的變化在於增加了多項新的特性,無疑讓 PyTorch 變得更好用了。