PyTorch框架学习八——PyTorch数据读取机制(简述)
PyTorch框架學(xué)習(xí)八——PyTorch數(shù)據(jù)讀取機(jī)制(簡(jiǎn)述)
- 一、數(shù)據(jù)
- 二、DataLoader與Dataset
- 1.torch.utils.data.DataLoader
- 2.torch.utils.data.Dataset
- 三、數(shù)據(jù)讀取整體流程
琢磨了一段時(shí)間,終于對(duì)PyTorch的數(shù)據(jù)讀取機(jī)制有了一點(diǎn)理解,并自己實(shí)現(xiàn)了簡(jiǎn)單數(shù)據(jù)集(貓狗分類數(shù)據(jù)集)的讀入和訓(xùn)練,這里簡(jiǎn)單寫一寫自己的理解,以備日后回顧。
一、數(shù)據(jù)
簡(jiǎn)單來說,一個(gè)機(jī)器學(xué)習(xí)或深度學(xué)習(xí)問題可以拆解為五個(gè)主要的部分:數(shù)據(jù)、模型、損失函數(shù)、優(yōu)化器和迭代過程,這五部分每個(gè)都可以詳細(xì)展開,都有非常多的知識(shí)點(diǎn),而一切的開始,都源于數(shù)據(jù)。
一般數(shù)據(jù)部分可以分為四個(gè)主要的內(nèi)容去學(xué)習(xí):
在PyTorch框架的學(xué)習(xí)中,前兩個(gè)不是重點(diǎn),它們是機(jī)器學(xué)習(xí)基礎(chǔ)和Python基礎(chǔ)的事。而PyTorch的數(shù)據(jù)預(yù)處理transforms方法在前幾次筆記進(jìn)行了很詳細(xì)地介紹,這次筆記重點(diǎn)是寫一點(diǎn)對(duì)數(shù)據(jù)讀取機(jī)制的理解,這也是最折磨的一部分,經(jīng)過了很多次的步進(jìn)演示,終于對(duì)整個(gè)數(shù)據(jù)讀取過程有了一個(gè)較為完整的印象。
總的來說,DataLoader里比較重要的是Sampler和Dataset,前者負(fù)責(zé)獲取要讀取的數(shù)據(jù)的索引,即讀哪些數(shù)據(jù),后者決定數(shù)據(jù)從哪里讀取以及如何讀取。
二、DataLoader與Dataset
1.torch.utils.data.DataLoader
功能:構(gòu)建可迭代的數(shù)據(jù)裝載器。
torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None, multiprocessing_context=None, generator=None)參數(shù)比較多,如下所示:
介紹幾個(gè)主要的:
上面涉及到一個(gè)小知識(shí)點(diǎn),順帶介紹一下,即Epoch、Iteration、Batchsize之間的關(guān)系:
舉個(gè)栗子:
若樣本總數(shù):80,Batchsize:8,則 1 Epoch = 10 Iterations。
若樣本總數(shù):87,Batchsize:8,且 drop_last = True,則1 Epoch = 10 Iterations;而drop_last = False時(shí),1 Epoch = 11 Iterations。
2.torch.utils.data.Dataset
功能:Dataset抽象類,所有自定義的Dataset需要繼承它,并且復(fù)寫__getitem__()函數(shù)。
這里__getitem__()函數(shù)的功能是:接收一個(gè)索引,返回一個(gè)樣本。
三、數(shù)據(jù)讀取整體流程
經(jīng)過上面簡(jiǎn)單的介紹,下面來看一下數(shù)據(jù)讀取的整體流程:
這個(gè)過程中的三個(gè)主要問題:
精力有限,就不在這里寫一個(gè)具體讀取數(shù)據(jù)的代碼了,這里有很多有價(jià)值的課程和資料可以學(xué)習(xí):深度之眼PyTorch框架
總結(jié)
以上是生活随笔為你收集整理的PyTorch框架学习八——PyTorch数据读取机制(简述)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AN IMAGE IS WORTH 16
- 下一篇: 简述SVM