Pytorch?使用Google?Colab訓練神經(jīng)網(wǎng)絡深度學習
學習前言
Colab是谷歌提供的一個云學習平臺,Very Nice,最近卡不夠用了決定去白嫖一波。該博客只會說明如何使用Colab對已有的深度學習倉庫進行訓練,并不會說如何進入外網(wǎng)、如何注冊等。
該博客僅為了演示Colab的使用,主要是為了各位熟悉Colab操作,具體問題具體分析,操作不當與版本更迭會導致步驟出錯,如果出錯的話建議多百度,多看代碼與指令,查一下錯誤的原因,同時建議是有一定的基礎同學再使用Colab
什么是Google Colab
Google Colab是谷歌提供的免費Jupyter 筆記本環(huán)境,不需要什么設置與環(huán)境配置就可以使用,完全在云端運行。不影響本地的使用。
Google Colab為研究者提供一定免費的GPU,可以編寫和執(zhí)行代碼,所有這些都可通過瀏覽器免費使用。同學們可以在上面輕松地跑 Tensorflow、Pytorch 等深度學習框架。
盡管Google Colab提供了一定的免費資源,但資源量是受限制的,所有 Colab 運行時都會在一段時間后重置。Colab Pro 訂閱者的使用量仍會受到限制,但相比非訂閱者可享有的限額要多出大約一倍。Colab Pro+ 訂閱者還可獲享更高的穩(wěn)定性。
相關鏈接
Colab官網(wǎng):https://colab.research.google.com/(需要外網(wǎng)才可以進入)
ipynb Github:https://github.com/bubbliiiing/Colab
利用Colab進行訓練
本文以YoloV4-Tiny-Pytorch版本的訓練為例,進行Colab的使用演示。
一、數(shù)據(jù)集與預訓練權重的上傳
1、數(shù)據(jù)集的上傳
Colab和Google自帶的云盤聯(lián)動非常好,因此我們需要首先將數(shù)據(jù)集上傳云盤,這個上傳的過程其實非常簡單,本地先準備好數(shù)據(jù)集。
由于我所上傳的庫,均使用的VOC數(shù)據(jù)集,我們需要按照VOC數(shù)據(jù)集擺放好
本文直接以VOC07+12數(shù)據(jù)集為例進行演示。
JPEGImages里面存放的為圖片文件,Annotations里面存放的標簽文件,ImageSets里面存放的是區(qū)分驗證集、訓練集、測試集的txt文件。
然后將VOCdevkit文件整個進行打包。需要注意的是,不是對上面三個文件夾進行打包,而是對VOCdevkit進行打包,這樣才滿足數(shù)據(jù)處理的格式。
在獲得打包后的壓縮包后,將壓縮包上傳到谷歌云盤。我在谷歌云盤上新建了一個VOC_datasets文件夾存放壓縮包。
此時數(shù)據(jù)集的上傳已經(jīng)完成。
2、預訓練權重的上傳
在谷歌云盤上進行文件夾的創(chuàng)建,首先創(chuàng)建Models,然后在Models里面創(chuàng)建yolov4-tiny-pytorch,然后在yolov4-tiny-pytorch里面創(chuàng)建logs和model_data。
model_data放置的是預訓練文件。
logs放置的是網(wǎng)絡訓練過程中產(chǎn)生的權值。
由于我們這次使用的是YoloV4-Tiny-Pytorch的庫,我們將它的預訓練權重上傳到model_data文件夾。
二、打開Colab并配置環(huán)境
1、筆記本的創(chuàng)建
在該步中,我們首先打開Colab的官網(wǎng)。
然后點擊文件,創(chuàng)建筆記本,此時會創(chuàng)建一個jupyter筆記本。
創(chuàng)建完成后給文件改個名,好看一些。
之后點擊代碼執(zhí)行程序,然后點擊更改運行時類型,在其中硬件加速器部分選擇GPU,Colab便會配置一個帶有GPU的機器,此時筆記本就創(chuàng)建完成了。
2、環(huán)境的簡單配置
colab已經(jīng)集成了pytorch環(huán)境,無需專門配置pytorch,不過使用的torch版本較新。
由于我們的數(shù)據(jù)集在谷歌云盤上,所以我們還要掛載云盤。
from google.colab import drive drive.mount('/content/gdrive')
我們將上述代碼輸入到筆記本中執(zhí)行。將云盤掛載到服務器上。然后點擊運行即可。
此時點擊左邊欄中,類似于文件夾的東西,就可以打開文件夾了,看看文件部署情況。gdrive就是我們配置的谷歌云盤。沒有的話就去左側刷新一下。
打開gdrive,其中有我們的數(shù)據(jù)集。
3、深度學習庫的下載
這一步,我們需要完成深度學習倉庫的下載,我們使用git clone指令進行下載。執(zhí)行如下指令后,左邊的文件中多出了yolov4-tiny-pytorch文件夾。沒有的話就去左側刷新一下。
然后我們通過了cd指令將根目錄轉移到了yolov4-tiny-pytorch文件夾。
!git clone https://github.com/bubbliiiing/yolov4-tiny-pytorch.git %cd yolov4-tiny-pytorch/
4、數(shù)據(jù)集的復制與解壓
直接將數(shù)據(jù)集布置在谷歌云盤會導致大量的云盤數(shù)據(jù)傳輸,速度遠不及本地文件,因此我們需要將數(shù)據(jù)集復制到本地里進行處理。
我們輸入下述代碼進行文件的復制與解壓。首先執(zhí)行的是刪除指令,將原來的空VOCdevkit文件夾進行刪除。然后進行解壓。
由于這里使用的是zip文件所以使用的是unzip指令,如果是其它形式的壓縮包,需要根據(jù)壓縮包的格式進行指令的修改(請同學們百度)。執(zhí)行下述指令后,可以發(fā)現(xiàn),左邊的文件中已經(jīng)解壓好了VOC數(shù)據(jù)集。沒有的話就去左側刷新一下。
!rm -rf ./VOCdevkit !cp /content/gdrive/MyDrive/VOC_datasets/VOC07+12+test.zip ./ !unzip ./VOC07+12+test.zip -d ./
5、保存路徑設置
本文提供的代碼默認的保存路徑為logs文件夾,但Colab存在不穩(wěn)定的問題,運行一段時間后會發(fā)生斷線。
如果將權值保存在原始根目錄下的logs文件夾,發(fā)生斷線網(wǎng)絡就白訓練了,浪費大量的時間。
可以將google云盤軟連接到根目錄下,那么即使斷線,權值也保留在云盤中。
本文之前在云盤中創(chuàng)建了logs文件夾。將該文件夾鏈接過來。
!rm -rf logs !ln -s /content/gdrive/MyDrive/Models/yolov4-tiny-pytorch/logs logs
三、開始訓練
1、標注文件的處理
打開voc_annotation.py文件,由于我們現(xiàn)在使用的直接就是VOC數(shù)據(jù)集,我們已經(jīng)劃分好了訓練集驗證集和測試集,所以我們將annotation_mode設置為2。
然后輸入指令完成標簽的處理,生成2007_train.txt和2007_val.txt。
!python voc_annotation.py
2、訓練文件的處理
處理訓練文件主要包含三個部分:
1、預訓練文件的使用。
2、保存周期的設置,這個設置是因為云盤的存儲空間有限,每代都保存會導致存儲空間滿出。
a、預訓練文件的使用
首先修改model_path,指向我們上傳到谷歌云盤的權值文件。在左側文件欄中,找到models/yolov4-tiny-pytorch/model_data,復制權值路徑。
替換右側的model_path。
b、保存周期的設置
有一些倉庫已經(jīng)完成了更新,添加了每隔多少世代的保存參數(shù),直接修改save_period既可,在本文中,我們將save_period設置成4,也就是每隔4代保存一次。
還沒有更新的倉庫只能每一代都保存了,記得偶爾去google云盤刪一下。
3、開始訓練
此時在筆記本里面輸入:
!python train.py
即可開始訓練。
斷線怎么辦?
1、防掉線措施
聽說可以通過自動點擊來減少掉線頻率。
在Google colab的按F12,點擊網(wǎng)頁的控制臺,粘貼如下代碼:
function ConnectButton(){ console.log("Connect pushed"); document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click() } setInterval(ConnectButton,60000);
2、完了還是掉線呀?
沒什么辦法,便宜的東西必然有它的壞處。
按照步驟重新來一次,然后將預訓練權重設置成logs文件夾里面訓練好的權值文件即可。
除此之外,Init_epoch等參數(shù)也需要調整。
總結
使用Colab訓練比較重要的是處理好路徑的關系,找到哪個文件在哪里,文件夾的執(zhí)行目錄在哪里,就可以比較簡單的運行起程序了,不過Colab確實存在斷線問題,我們需要時刻保存好文件,因此我將權值直接保存在云盤上,這樣也不會丟失。
以上就是Pytorch 使用Google Colab訓練神經(jīng)網(wǎng)絡深度學習的詳細內容,更多關于Pytorch訓練Google Colab神經(jīng)網(wǎng)絡的資料請關注腳本之家其它相關文章!
相關文章
在tensorflow實現(xiàn)直接讀取網(wǎng)絡的參數(shù)(weight and bias)的值
這篇文章主要介紹了在tensorflow實現(xiàn)直接讀取網(wǎng)絡的參數(shù)(weight and bias)的值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python continue繼續(xù)循環(huán)用法總結
本篇文章給大家總結了關于Python continue繼續(xù)循環(huán)的相關知識點以及用法,有需要的朋友跟著學習下吧。2018-06-06Python爬取YY評級分數(shù)并保存數(shù)據(jù)實現(xiàn)過程解析
這篇文章主要介紹了Python爬取YY評級分數(shù)并保存數(shù)據(jù)實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06