PyTorch 一 資料處理

2021-07-31 15:55:47 字數 2593 閱讀 4727

目錄連線

(1) 資料處理

(2) 搭建和自定義網路

(3) 使用訓練好的模型測試自己

(5) pytorch原始碼修改之增加convlstm層

(6) 梯度反向傳遞(backpropogate)的理解

(7) 模型的訓練和測試、儲存和載入

(8) pytorch-to-caffe

(總) pytorch遇到令人迷人的bug

pytorch的安裝比caffe容易太多了,一次就成功了,具體安裝多的就不說了,pytorch官方講的很詳細,還有pytorch官方(中文)中文版本。

pytorch的使用也比較簡單,具體教程可以看deep learning with pytorch: a 60 minute blitz, 講的通俗易懂。

要使學會用乙個框架,只會執行其測試實驗是不行的,所以現在打算把caffe中的siamese模型使用pytorch實現,來鞏固自己對pytroch的熟練使用。

首先是資料處理這一塊,pytorch使用了torchvision來完成資料的處理,其只實現了一些資料集的處理,如果處理自己的工程則需要修改增加內容。

把原始資料處理為模型使用的資料需要3步:transforms.compose()torchvision.datasetstorch.utils.data.dataloader()分別可以理解為資料處理格式的定義、資料處理和資料載入。

compose()**中給出的解釋是composes several transforms together. 就是通過compose把一些對影象處理的方法集中起來。比如先中心化,然後轉換為張量(pytorch的資料結構),其**為:transforms.compose([transform.centercrop(10), transofrms.totensor()])又比如先轉換為張量,然後正則化,**為:`transforms.compose([transofrms.totensor(), transforms.normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]), 其具體的引數呼叫在原始碼中可以看到,在此不多說了。還要注意的是compose的**是:

def __call_(self, img):

for t in self.transforms:

img = t(img)

return img

這就是把輸入到compose的操作按順序進行執行。先執行第乙個,然後第二個……。如果需要處理自己的資料,可以把具體的操縱放在這個類中實現。

torchvision.datasets;裡實現了不同針對資料集的處理方法,主要用來載入資料和處理資料。比如在mnist.py

和cifar.py 中用來處理mnist和cifar資料集。類的實現需要繼承父類data.dataset,其主要方法有2個:

至此,對資料進行載入,然後處理傳給pytorch已經完成,如果需要對自己的資料進行處理,也是通過修改和增加此部分完成。接下來需要對訓練的資料進行處理,比如分批次的大小,十分隨機處理等等。

torch.utils.data.dataloader()data loder, combines a dataset and and a sampler, and provides single, or multi-process iterators over the dataset. 就是把合成資料並且提供迭代訪問。輸入引數有:

batch-size。樣本每個batch的大小,預設為1。

shuffle。是否打亂資料,預設為false。

sampler。定義乙個方法來繪製樣本資料,如果定義該方法,則不能使用shuffle。

num_workers。資料分為幾批處理(對於大資料)。

collate_fn。整理資料,把每個batch資料整理為tensor。(一般使用預設呼叫default_collate(batch))。

pin_memory。針對不同型別的batch進行處理。比如為map或者squence等型別,需要處理為tensor型別。

drop_last。用於處理最後乙個batch的資料。因為最後乙個可能不能夠被整除,如果設定為true,則捨棄最後乙個,為false則保留最後乙個,但是最後乙個可能很小。

迭代器(dataloaderiter)的具體處理就是根據這些引數的設定,分別進行不同的處理。

補充2017/8/10:

torch.utils.data.dataloader類主要使用torch.utils.data.sampler實現,sampler是所有取樣器的基礎類,提供了迭代器的迭代(__iter__)和長度(__len__)介面實現,同時sampler也是通過索引對資料進行洗牌(shuffle)等操作。因此,如果dataloader不適用於你的資料,需要重新設計資料的分批次,可以充分使用所提供的smapler

Pytorch資料處理流程

1.numpy.genfromtxt path,delimiter dtype str,skip header 1 將資料從csv匯入array 型別為string 若資料為影象,還需對影象進行處理 增廣 string split list np.array ndarray reshape 最後轉換...

自學Python資料處理 一 資料請求

獲取資料首先要向伺服器傳送request請求,但是直接傳送的話很容易會被發現是 爬蟲 所以就需要進行簡單的 偽裝 import requests url headers data requests.get url,headers headers print data.text 偽裝的重點是heade...

Pytorch學習筆記(一) 資料 運算

1.1 torch.floattensor torch.floattensor 2,3 隨機生成 torch.floattensor 2,3,4,5 1.2 torch.inttensor torch.inttensor 2,3 隨機生成 torch.inttensor 2,3,4,5 1.3 to...