本文約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.Polypip 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-oneimport 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】至聯繫郵箱,申請白名單授權並按要求編輯。發布後請將連結反饋至聯繫郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。點擊「閱讀原文」擁抱組織