PyTorch深度學習快速入門
- 1.PyTorch環境配置及安裝
- 2.python編輯器的選擇、安裝、配置(pycharm、JupyTer安裝)
- 3.為什么torch.cuda.is_available()返回false
- 4.python學習中兩大法寶函數(也可用在pytorch)
- 5.pycharm和jupyter(究bi特)使用及對比
- 6.pytorch加載數據初認識
- 7.dataset類代碼實戰
- 8.TensorBoard的使用(一)
- 9.TensorBoard的使用(二)
- 10.Transforms的使用(一)
- 11.Transforms的使用(二)
- 12.常見的Transforms(一)
- 13.常見的Transforms(二)
- 14.torchvision中的數據集的使用
- 15.DataLoader的使用
1.PyTorch環境配置及安裝
https://repo.anaconda.com/
在開始菜單打開Anaconda prompt
在命令行窗口看見base就是安裝成功
我們要檢查顯卡的驅動是否正確安裝
看到GPU正常顯示型號,則顯卡驅動已經正確安裝了
在正確安裝pytorch之前
我們要學會如何正確管理環境
因為我們之后在不同的項目、代碼需要的環境是不一樣的
有的代碼需要pytorch0.4、有的需要1.0
conda create -n pytorch python=3.6
n表示name的意思,pytorch就是這個環境的名字
python=3表示要安裝的包
conda activate pytorch用來激活這個環境
左邊括號里面的就是環境的名稱
pip list用來查看環境中有哪些工具包
但其中沒有我們需要的pytorch
下面我們開始安裝pytorch
我們需要知道自己GPU的型號
沒有顯卡 CUDA選擇None
conda9.2以上要確保我們的驅動版本大于396.26
我們要先查詢一下自己的驅動版本nvidia-smi
conda install pytorch torchvision cudatoolkit=9.2 -c pytorch -c defaults -c numba/label/dev
使用python
import torch
觀察pytorch是否安裝成功
使用torch.cuda.is_available()這個命令觀察是否可以使用GPU
顯示false是因為cuda下錯版本了,要與自己的電腦對應起來
比如我的
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
3060最低要11.1的cuda
2.python編輯器的選擇、安裝、配置(pycharm、JupyTer安裝)
選擇地址和環境
下面檢測一下pycharm是否成功導入了conda的運行環境
torch.cuda.is_available()
jupyter是默認安裝在外面的base環境中的
但我們的base環境是沒有安裝pytorch的
所以這個jupyter無法使用pytorch
我們可以在base環境中安裝pytorch或者在pytorch環境中安裝jupyter
我們使用第二種方法
先進入pytorch環境
conda activate pytorch
我的pytorch環境中沒有
使用conda install nb_conda安裝
安裝完成后輸入jupyter notebook
http://localhost:8888/?token=f0d9cb3f4543dceeb4737d957381b4c3ab37070ce474b819
點擊shift+回車運行代碼塊
torch.cuda.is_available()
如果是中文用戶名可能會運行不了
在環境變量下做如下修改
%systemroot%\TEMP
%USERPROFILE%\AppData\Local\Temp
3.為什么torch.cuda.is_available()返回false
4.python學習中兩大法寶函數(也可用在pytorch)
輸出只有一行的,可以點擊此刻頁面最左側第2列第一個按鈕“Soft-warp”
查看torch.cuda
我們可以看見之前用的is.available
有_表示它是一個函數
5.pycharm和jupyter(究bi特)使用及對比
首先是pycharm
如何確定這個文件使用的是我們的pytorch的cuda環境呢
新建一個python文件
如何運行這個文件
我們要添加相應的python解釋器
點擊確定就OK了
我們也可以直接在python控制臺
在里面創建一個新的文件
先選擇相應的環境
6.pytorch加載數據初認識
https://pan.baidu.com/s/1jZoTmoFzaTLWh4lKBHVbEA 密碼: 5suq
可以下載一下數據集
這個數據集分為train(訓練數據集)和val(驗證數據集)
下面是train
這是一個識別螞蟻和蜜蜂對他進行二分類的一個數據集
其中ants和bees這兩個文件的名稱就是label
還有其他的形式
告訴我們訓練的圖片是什么樣子
告訴我們訓練的label是什么樣子
或者我們也可以將label直接寫在圖片名稱上面
下面說明如何使用dataset類
或者
7.dataset類代碼實戰
使用控制臺進行一個調試
將數據集放到項目中,并且重命名為dataset
我們要獲取圖片的地址
根據def getitem(self, idx):中的idx這個索引去獲取
先去獲取所有圖片地址的一個列表
使用OS去獲取
上面我們就是獲得了所有圖片的地址
下面我們要獲取每一個圖片
下面考慮這個數據有多長
如果我們想要獲取蜜蜂的數據集
我們訓練數據集就是這兩個數據集的一個集合
如果我們將數據集進行另外一種形式的表達
每一張圖片對應的label
8.TensorBoard的使用(一)
tranform可以我們的圖像統一到同一個尺寸
或者對圖像中的每一個數據進行一個類的轉換
我們一般想知道我們的訓練過程中的loss是如何變化的
通過這個loss知道我們的訓練過程是否安裝我們預想的變化
我們也可以從相應的loss中去看一下我們選擇什么樣的模型
上面這個圖就是在外面的2974步輸入的圖像
這個TensorBoard可以幫助我們探究一些模型在不同的階段是如何輸出的
首先打開項目文件夾,設置環境
查看如何使用
tag就是圖表的title
scalar_value是我們對應的數值,y軸
global_step是我們訓練到多少步,x軸
我們沒有還沒有安裝tensorboard這個包
如果在一臺服務器上有好幾個人訓練
可能端口會沖突
我們可以指定一下這個端口
tensorboard --logdir=logs
write寫入一個新的事件當中
其實也進入了上一個事件當中
就會出現上面的情況
第一種方法
我們可以將對應的logs下面的文件全部刪除
第二種方法
9.TensorBoard的使用(二)
其中的img_tensor要么是torch_tensor型,要么是numpy.array型。。。
我們這邊的圖片類型是不滿足要求的
我們安裝一下opencv
轉換為numpy型
10.Transforms的使用(一)
transforms主要用來對圖片進行一些變換
左邊的structure可以看它的結構
我們上面就是將img類型的圖片轉換為我們tensor類型的一個圖片
11.Transforms的使用(二)
我們為什么需要tensor這個數據類型
tensor包裝了我們神經網絡所需要的一些參數
我們在神經網絡中一般先把數據轉化為tensor型,然后進行一些訓練
我們上面學習了PIL Image類型的讀取
那么如何讀取numpy類型的呢
最常用的就是使用opencv
我們安裝一下OpenCV
pip install opencv-python( conda install py-opencv)
12.常見的Transforms(一)
compose是將圖片進行一個中心的裁剪然后轉換為tensor
_ _ cal l_ _ 可以直接調用
輸入必須是一個PIL Image或者numpy類型轉換為一個tensor類型
歸一化
輸入必須是一個tensor類型
用平均值和標準差對張量圖像進行歸一化
輸入的img_tensor有三個通道,人為設置均值和標準差都是0.5,
然后利用公式算的輸出值img_norm
下面就是我們歸一化后的一個結果
一般圖像多少RGB,三通道
13.常見的Transforms(二)
輸入是PIL Image類型
尺寸由原來的3200 * 3200 變為 512 * 512
輸出的是PIL Image類型
如果我們想要在tensorboard進行顯示的話
我們要將img_resize變為totensor的一個數據類型
當你對一個圖像應用trans_compose變換時,它首先會使用trans_resize_2進行尺寸調整,然后使用trans_totensor將PIL圖像轉換為PyTorch的Tensor。
這個參數是個列表
其實就是將resize變換和totensor合并了
所以列表兩個參數代表這兩個過程合并。
下面我們看另外一個方法
隨機裁剪
14.torchvision中的數據集的使用
介紹如何將數據集和我們的transforms結合在一起
在科研當中一些標準的數據集如何去下載、組織、查看、使用
下面是官網提供的數據集
比如其中的CIFAR10數據集一般用于物體識別
root表示數據集在什么位置
train為true的話表示為訓練集、false表示為測試集
transform表示我們想對訓練的數據集進行一個什么樣的變化
target_transform表示對target進行一個transform
download如果為true的話,會從網上自動給我們下載這個數據集
torchvision.models中會提供一些預訓練好的神經網絡模塊
介紹如何將數據集和我們的transforms結合在一起
這里會在我們的文件夾下創建dataset,并且下載CIFR10數據集到其中
前面是我們的輸入圖片
后面是我們的target類別,這里將我們的真實類別表示為一個數字3
如果target為0,就是airplane
如果我們想要看一下這個圖片
下面介紹一下CIFAR10這個數據集
6萬張32 * 32像素的彩色圖片,且分為10個類別
5w訓練,1w測試
下面和我們的transform進行聯動
因為我們的原始圖片是PIL Image
如果要給我們的pytorch進行使用,需要轉為tensor數據類型
這里我們就使用transform
這里就是一個tensor數據類型
我們也可以使用我們的tensorboard進行一個顯示
比如我們想顯示測試數據集中的前10張圖片
我們下載數據集的時候,可以直接在迅雷上使用URL鏈接進行下載