Pytorch專題實戰——數據轉換(Dataset Transforms)

1.導入必要模塊

import torch
from torch.utils.data import Dataset
import numpy as np
import torchvision

2.定義數據處理類

class WineDataset(Dataset):
    def __init__(self, transform=None):
        xy = np.loadtxt('./wine.csv',delimiter=',',dtype=np.float32,skiprows=1)
        self.n_samples = xy.shape[0]
        
        self.x_data = xy[:,1:]
        self.y_data = xy[:,[0]]
        
        self.transform = transform
    
    def __getitem__(self, index):
        sample = self.x_data[index], self.y_data[index]
        
        if self.transform:
            sample = self.transform(sample)
        return sample
    
    def __len__(self):
        return self.n_samples

3.定義numpy轉化爲tensor類

class ToTensor:
    def __call__(self, sample):   #可調用對象
        inputs, targets = sample
        return torch.from_numpy(inputs), torch.from_numpy(targets)

4.定義乘法轉化類

class MulTransform:
    def __init__(self, factor):
        self.factor = factor
    
    def __call__(self, sample):
        inputs, targets = sample
        inputs *= self.factor    #數據*影響因子
        return inputs, targets

5.打印結果

5.1.未轉化前

print("Without Transform")
dataset = WineDataset()
first_data = dataset[0]
features, labels = first_data
print(type(features), type(labels))
print(features, labels)

在這裏插入圖片描述

5.2.tensor轉化

print("with Tensor Transform")
dataset = WineDataset(transform=ToTensor())
first_data = dataset[0]
features, labels = first_data
print(type(features), type(labels))
print(features, labels)

在這裏插入圖片描述

5.3.乘法轉化

print('with Tensor and Multiplication Transform')
composed = torchvision.transforms.Compose([ToTensor(), MulTransform(4)])
dataset = WineDataset(transform=composed)
first_data = dataset[0]
features, labels = first_data
print(type(features), type(labels))
print(features, labels)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章