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...