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