【深度学习】Pytorch编写代码基本步骤思想
魏福煊 哈工大英才實驗班本科生
謝天寶 哈工大英才實驗班本科生
一、前言
在我們要用pytorch構建自己的深度學習模型的時候,基本上都是下面這個流程步驟,寫在這里讓一些新手童鞋學習的時候有一個大局感覺,無論是從自己寫,還是閱讀他人代碼,按照這個步驟思想(默念4大步驟,找數據定義、找model定義、(找損失函數、優化器定義),主循環代碼邏輯),直接去找對應的代碼塊,會簡單很多。
二、基本步驟思想
所有的深度學習模型過程都可以形式化如下圖:
分為四大步驟:
1、輸入處理模塊?(X 輸入數據,變成網絡能夠處理的Tensor類型)
2、模型構建模塊?(主要負責從輸入的數據,得到預測的y^, 這就是我們經常說的前向過程)
3、定義代價函數和優化器模塊?(注意,前向過程只會得到模型預測的結果,并不會自動求導和更新,是由這個模塊進行處理)
4、構建訓練過程 (迭代訓練過程,就是上圖表情包的訓練迭代過程)
這幾個模塊分別與上圖的數字標號1,2,3,4進行一一對應!
三、實例講解
知道了上面的宏觀思想之后,后面給出每個模塊稍微具體一點的解釋和具體一個例子,再幫助大家熟悉對應的代碼!
1.數據處理
對于數據處理,最為簡單的?式就是將數據組織成為?個 。但許多訓練需要?到mini-batch,直 接組織成Tensor不便于我們操作。pytorch為我們提供了Dataset和Dataloader兩個類來方便的構建。
torch.utils.data.Dataset
繼承Dataset 類需要override 以下?法:
torch.utils.data.DataLoader
torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=False)DataLoader Batch。如果選擇shuffle = True,每?個epoch 后,mini-Batch batch_size 常?的使??法如下:
2. 模型構建
所有的模型都需要繼承torch.nn.Module , 需要實現以下?法:
其中forward() ?法是前向傳播的過程。在實現模型時,我們不需要考慮反向傳播。
3. 定義代價函數和優化器
這部分根據??的需求去參照doc
4、構建訓練過程
pytorch的訓練循環?致如下:
下面再用一個簡單例子,來鞏固一下:
slides來自https://www.bilibili.com/video/BV1Y7411d7Ys?from=search&seid=3765076366663992699slides來自https://www.bilibili.com/video/BV1Y7411d7Ys?from=search&seid=3765076366663992699slides來自https://www.bilibili.com/video/BV1Y7411d7Ys?from=search&seid=3765076366663992699slides來自https://www.bilibili.com/video/BV1Y7411d7Ys?from=search&seid=3765076366663992699四、資源推薦
希望上面的講解能幫助新手童鞋建立一個基本的代碼邏輯輪廓,這里推薦幾個我覺得很好的資源:
1、第一個是B站劉二大人的入門Pytorch視頻,這是我見過入門最好的視頻資源之一,強烈推薦,上面的例子slides也均來自于此,地址如下
https://www.bilibili.com/video/BV1Y7411d7Ys?p=6
2、其實入門之后,就不用看太多學習資料了,你是搞哪個方向的,推薦直接去看一下相關方向頂會論文實現,從配環境、debug看懂他的code,到調參到他論文的相近結果,功力會針對性提高很多。
希望文章對一些新手朋友有幫助~
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/yFQV7am本站qq群1003271085。加入微信群請掃碼進群:總結
以上是生活随笔為你收集整理的【深度学习】Pytorch编写代码基本步骤思想的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python基础】4300 字Pyth
- 下一篇: 梳理百年深度学习发展史-七月在线机器学习