PyTorch學習筆記之數據加載和預處理

PyTorch 通過 torch.utils.data 對一般常用的數據加載進行了封裝,可以很容易地實現多線程數據預讀和批量加載。並且 torchvision 已經預先實現了常用圖像數據集,包括前面使用過的 CIFAR-10, ImageNet, COCO, MNIST, LSUN 等數據集,可通過 torchvision.datasets 方便的調用。

 

Dataset

Dataset 是一個抽象類,爲了能夠方便的讀取,需要將使用的數據包裝爲 Dataset 類。自定義的 Dataset 需要繼承它並且實現兩個成員方法:

 1、__getitem__()  該方法定義用索引 ( 0 到 len(self)) 獲取一條數據或一個樣本

 2、__len__() 該方法返回數據集的總長度

 

下面我們使用 kaggle 上的一個競賽 bluebook for bulldozers 自定義一個數據集,爲了方便介紹,我們使用裏面的數據字典來做說明(因爲條數少)

# 至此,我們的數據集已經定義完成了,我們可以實例話一個對象訪問它。

# 我們可以直接使用如下命令查看數據集數據。

自定義的數據集已經創建好了,下面我們使用官方提供的數據載入器,讀取數據。

 

Dataloader

Dataloader 爲我們提供了對 Dataset 的讀取操作,常用參數有:batch_size(每個 bath 的大小)、 shuffle(是否進行 shuffle 操作)、 num_workers(加載數據的時候使用幾個子進程)。下面做一個簡單的操作

DataLoader 返回的是一個可迭代對象,我們可以使用迭代器分次獲取數據。

# 常見的用法是使用 for 循環對其進行遍歷

我們已經可以通過 dataset 定義數據集,並使用 Dataloader 載入和遍歷數據集,除了這些以外, PyTorch 還提供能 torchvision 的計算機視覺擴展包。

 

torchvision 包

torchvision 是 PyTorch 中專門用來處理圖像的庫, PyTorch 官網的安裝教程中最後的 pip install torchvision 就是安裝這個包。

 

Torchvision.datasets

Torchvision.datasets 可以理解爲 PyTorch 團隊自定義的 dataset, 這些 dataset 幫我們提前處理好了很多的圖片數據集,我們拿來就可以直接使用:

我們可以直接使用,示例如下:

 

torchvision.models

Torchvision 不僅提供了常用圖片數據集,還提供了訓練好的模型,可以加載之後,直接使用,或者在進行遷移學習 torchvision.models 模塊的子模塊中包含以下子模型結構。

 

torchvision.transforms

transforms 模塊提供了一般的圖像轉換操作類,用作數據處理和數據增強

(0.485,0.456,0.406), (0.2023,0.1994,0.2010) 這幾個數字是根據 ImageNet 訓練的歸一化參數均值和方差。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章