pytorch之ImageFolder使用詳解

2022-10-04 15:15:23 字數 1776 閱讀 4238

pytorch之imagefolder

torchvision已經預先實現了常用的dataset,包括前面使用過的cifar-10,以及imagenet、coco、mnist、lsun等資料集,可通過諸如torchvision.datasets.cifar10來呼叫。在這裡介紹乙個會經常使用到的dataset——imagefolder。

imagefolder假設所有的檔案按資料夾儲存,每個資料夾下儲存同乙個類別的,資料夾名為類名,其建構函式如下:

imagefolder(root, transform=none, target_transform=none, loader=default_loader)

它主要有四個引數:

root:在root指定的路徑下尋找

transform:對pil image進行的轉換操作,transform的輸入是使用loader讀取的返回物件

target_transwww.cppcns.comform:對label的轉換

loader:給定路徑後如何讀取,預設讀取為rgb格式的pil image物件

label是按照資料夾名順序排序後存成字典,即,一般來說最好直接將資料夾命名為從0開始的數字,這樣會和imagefolder實際的label一致,如果不是這種命名規範,建議看看se屬性以了解label和資料夾名的對映關係。

結構如下所示:

from torchvision import transforms as t

import matplotlib.pyplot as plt

from torchvision.datasets import imagefolder

dataset = imagefolder('data/dogcat_2/')

# cat資料夾的對應label 0,dog對應1

print(dataset.class_to_idx)

# 所有的路徑和對應的label

print(dataset.imgs)

# 沒有任何的transform,所以返回的還是pil image物件

#print(dataset[0][1])# 第一維是第幾張圖,第二維為1返回label

#print(dataset[0][0]) # 為0返回資料

plt.imshow(dataset[0][0])

plt.axis('off')

plt.show()

加上transform

normalize = t.normalize(mean=[0.4, 0.4, 0.4], std=[0.2, 0.2, 0.2])

transform = t.compose([

t.randomresizedcrop(224),

t.randomhorizontal程式設計客棧flippucby(),

t.totensor(),

normalize,

])dataset = imagefolder('data1/dogc程式設計客棧at_2/', transform=transform)

# 深度學習中資料一般儲存成cxhxw,即通道數x高x寬

#print(dataset[0][0].size())

to_img = t.topilimage()

# 0.2和0.4是標準差和均值的近似

a=to_img(dataset[0][0]*0.2+0.4)

plt.imshow(a)

plt.axis('off')

plt.show()

本文標題: pytorch之imagefolder使用詳解

本文位址:

Pytorch之線性回歸

import torch from torch import nn import numpy as np import torch.utils.data as data from torch.nn import init 使得模型的可復現性 torch.manual seed 1 設定預設的資料格式...

pytorch優化之量化

思考 pytorch的eager模式,是怎樣支援開發模式支援序列執行斷點除錯,生產模式支援生成可併發執行 的,可以拉原始碼除錯分析。這裡會涉及到圖程式設計模式 編譯原理,執行優化等技術。什麼是量化?量化是指用於執行計算並以低於浮點精度的位寬儲存張量的技術。量化模型對張量使用整數而不是浮點值執行部分或...

pytorch 之 imagefloder的用法

問題的關鍵在於如何確定和類別的對應關係 from torchvision.datasets import imagefolder dataset imagefolder f my code data 0db train 讀入資料 print dataset.imgs 2 此時,dataset.img...