Pytorch使用技巧之Dataloader中的collate_fn參數(shù)詳析
以MNIST為例
from torchvision import datasets mnist = datasets.MNIST(root='./data/', train=True, download=True) print(mnist[0])
結(jié)果
(<PIL.Image.Image image mode=L size=28x28 at 0x196E3F1D898>, 5)
MINIST數(shù)據(jù)集的dataset是由一張圖片和一個label組成的元組
dataloader = torch.utils.data.DataLoader(dataset=mnist, batch_size=2, shuffle=True,collate_fn=lambda x:x)
for each in dataloader:
print(each)
break
結(jié)果
[(<PIL.Image.Image image mode=L size=28x28 at 0x2CB3B105630>, 0), (<PIL.Image.Image image mode=L size=28x28 at 0x2CB3B105668>, 2)]
collate_fn為lamda x:x時表示對傳入進來的數(shù)據(jù)不做處理
下面自定義collate_fn看看什么效果
def collate(data):
img = []
label = []
for each in data:
img.append(each[0])
label.append(each[1])
return img,label
dataloader = torch.utils.data.DataLoader(dataset=mnist, batch_size=2, shuffle=True,collate_fn=lambda x:collate(x))
for each in dataloader:
print(each)
break
結(jié)果
([<PIL.Image.Image image mode=L size=28x28 at 0x241433A36D8>, <PIL.Image.Image image mode=L size=28x28 at 0x241433A3710>], [9, 3])
說明:若不設置collate_fn參數(shù)則會使用默認處理函數(shù)
但必須保證傳進來的數(shù)據(jù)都是tensor格式否則會報錯
附:DataLoader完整的參數(shù)表如下:
class torch.utils.data.DataLoader(
dataset,
batch_size=1,
shuffle=False,
sampler=None,
batch_sampler=None,
num_workers=0,
collate_fn=<function default_collate>,
pin_memory=False,
drop_last=False,
timeout=0,
worker_init_fn=None)
DataLoader在數(shù)據(jù)集上提供單進程或多進程的迭代器
幾個關鍵的參數(shù)意思:
- shuffle:設置為True的時候,每個世代都會打亂數(shù)據(jù)集
- collate_fn:如何取樣本的,我們可以定義自己的函數(shù)來準確地實現(xiàn)想要的功能
- drop_last:告訴如何處理數(shù)據(jù)集長度除于batch_size余下的數(shù)據(jù)。True就拋棄,否則保留
總結(jié)
到此這篇關于Pytorch使用技巧之Dataloader中的collate_fn參數(shù)的文章就介紹到這了,更多相關Dataloader中的collate_fn參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python模塊Typing.overload的使用場景分析
在 Python 中,typing.overload 是一個用于定義函數(shù)重載的裝飾器,函數(shù)重載是指在一個類中可以定義多個相同名字但參數(shù)不同的函數(shù),使得在調(diào)用函數(shù)時可以根據(jù)參數(shù)的不同選擇不同的函數(shù)執(zhí)行,這篇文章主要介紹了Python模塊Typing.overload的使用,需要的朋友可以參考下2024-02-02
Python實現(xiàn)生命游戲的示例代碼(tkinter版)
生命游戲是由劍橋大學約翰·何頓·康威設計的計算機程序,一時吸引了各行各業(yè)一大批人的興趣。本文將用Python實現(xiàn)這一游戲,感興趣的可以嘗試一下2022-08-08
Pytorch-mlu?實現(xiàn)添加逐層算子方法詳解
本文主要分享了在寒武紀設備上?pytorch-mlu?中添加逐層算子的方法教程,代碼具有一定學習價值,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
python實現(xiàn)將兩個文件夾合并至另一個文件夾(制作數(shù)據(jù)集)
這篇文章主要介紹了python實現(xiàn)將兩個文件夾合并至另一個文件夾(制作數(shù)據(jù)集),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python實現(xiàn)的根據(jù)IP地址計算子網(wǎng)掩碼位數(shù)功能示例
這篇文章主要介紹了Python實現(xiàn)的根據(jù)IP地址計算子網(wǎng)掩碼位數(shù)功能,涉及Python數(shù)值運算相關操作技巧,需要的朋友可以參考下2018-05-05

