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