如何利用pytorch自定義一個(gè)數(shù)據(jù)集-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)如何利用pytorch自定義一個(gè)數(shù)據(jù)集,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)建站作為成都網(wǎng)站建設(shè)公司,專注網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),有關(guān)成都企業(yè)網(wǎng)站定制方案、改版、費(fèi)用等問(wèn)題,行業(yè)涉及成都門簾等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。

自定義數(shù)據(jù)集

在訓(xùn)練深度學(xué)習(xí)模型之前,樣本集的制作非常重要。在pytorch中,提供了一些接口和類,方便我們定義自己的數(shù)據(jù)集合,下面完整的試驗(yàn)自定義樣本集的整個(gè)流程。

開(kāi)發(fā)環(huán)境

  • Ubuntu 18.04
  • pytorch 1.0
  • pycharm

實(shí)驗(yàn)?zāi)康?/strong>

  1. 掌握pytorch中數(shù)據(jù)集相關(guān)的API接口和類
  2. 熟悉數(shù)據(jù)集制作的整個(gè)流程

實(shí)驗(yàn)過(guò)程

1.收集圖像樣本

以簡(jiǎn)單的貓狗二分類為例,可以在網(wǎng)上下載一些貓狗圖片。創(chuàng)建以下目錄:

  • data-------------根目錄
  • data/test-------測(cè)試集
  • data/train------訓(xùn)練集
  • data/val--------驗(yàn)證集

如何利用pytorch自定義一個(gè)數(shù)據(jù)集

在test/train/val之下在校分別創(chuàng)建2個(gè)文件夾,dog, cat

如何利用pytorch自定義一個(gè)數(shù)據(jù)集

cat, dog文件夾下分別存放2類圖像:

如何利用pytorch自定義一個(gè)數(shù)據(jù)集

標(biāo)簽

種類標(biāo)簽
cat0
dog1

之后寫一個(gè)簡(jiǎn)單的python腳本,生成txt文件,用于指明每個(gè)圖像和標(biāo)簽的對(duì)應(yīng)關(guān)系。

格式: /cat/1.jpg 0 \n dog/1.jpg 1 \n .....

如圖:

如何利用pytorch自定義一個(gè)數(shù)據(jù)集

至此,樣本集的收集以及簡(jiǎn)單歸類完成,下面將開(kāi)始采用pytorch的數(shù)據(jù)集相關(guān)API和類。

2. 使用pytorch相關(guān)類,API對(duì)數(shù)據(jù)集進(jìn)行封裝

2.1 pytorch中數(shù)據(jù)集相關(guān)的類,接口

pytorch中數(shù)據(jù)集相關(guān)的類位于torch.utils.data package中。

https://pytorch.org/docs/stable/data.html

如何利用pytorch自定義一個(gè)數(shù)據(jù)集

本次實(shí)驗(yàn),主要使用以下類:

torch.utils.data.Dataset
torch.utils.data.DataLoader

如何利用pytorch自定義一個(gè)數(shù)據(jù)集

Dataset類的使用: 所有的類都應(yīng)該是此類的子類(也就是說(shuō)應(yīng)該繼承該類)。 所有的子類都要重寫(override) __len()__, __getitem()__ 這兩個(gè)方法。

方法作用
__len()__此方法應(yīng)該提供數(shù)據(jù)集的大小(容量)
__getitem()__此方法應(yīng)該提供支持下標(biāo)索方式引訪問(wèn)數(shù)據(jù)集

這里和Java抽象類很相似,在抽象類abstract class中,一般會(huì)定義一些抽象方法abstract method,抽象方法:只有方法名沒(méi)有方法的具體實(shí)現(xiàn)。如果一個(gè)子類繼承于該抽象類,要重寫(overrode)父類的抽象方法。

DataLoader類的使用:

如何利用pytorch自定義一個(gè)數(shù)據(jù)集

2.2 實(shí)現(xiàn)

使用到的python package

python package目的
numpy矩陣操作,對(duì)圖像進(jìn)行轉(zhuǎn)置
skimage圖像處理,圖像I/O,圖像變換
matplotlib圖像的顯示,可視化
os一些文件查找操作
torchpytorch
torvisionpytorch

源碼

導(dǎo)入python包

import numpy as np
from skimage import io
from skimage import transform
import matplotlib.pyplot as plt
import os
import torch
import torchvision
from torch.utils.data import Dataset, DataLoader
from torchvision.transforms import transforms
from torchvision.utils import make_grid

網(wǎng)頁(yè)名稱:如何利用pytorch自定義一個(gè)數(shù)據(jù)集-創(chuàng)新互聯(lián)
URL分享:http://muchs.cn/article32/eespc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站收錄、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站排名商城網(wǎng)站、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)