欢迎光临散文网 会员登陆 & 注册

PyTorch Tutorial 09 - Dataset and Dat...

2023-02-16 11:36 作者:Mr-南乔  | 我要投稿

教程Python代码如下:


"""

epoch = 1 forward and backward pass of ALL training samples

batch_size = numberlof training samples in one forward & backward pass

number of iterations = number of passes,each pass using [batch_size] number of samples

e.g. 100 samples,batch_size=20 --> 100/20 = 5 iterations for 1 epoch

"""

import torch

import torchvision

from torch.utils.data import Dataset, DataLoader

import numpy as np

import math


#实现自己的自定义数据集

class WineDataset():

  def __init__(self):

    # data loading, 数据加载

    xy = np.loadtxt('./Data/wine.csv',delimiter=",", dtype=np.float32, skiprows=1) #delomiter分隔符,skiprows=1跳过第一行(第一行为标题)

    # 把数据集分成 x 和 y

    self.x = torch.from_numpy(xy[:,1:]) #不要第一行

    self.y = torch.from_numpy(xy[:, [0]]) # n_samples, 1:只要第一列,这样就有了样品的大小数

    self.n_samples = xy.shape[0]



  def __getitem__(self, index):

    # dataset[0], 允许以后进行索引,所以我们可以调用索引为0的数据集

    return self.x[index], self.y[index]


  def __len__(self):

    # len(dataset), 调用数据集的长度

    return self.n_samples


dataset = WineDataset()

# firat_data = dataset[0]

# features, labels = firat_data

# print(features, labels)


# 使用数据加载器

dataloader = DataLoader(dataset = dataset, batch_size=4, shuffle=True, num_workers=0)

"""

datatiter = iter(dataloader)

data = next(datatiter)

features, labels = data

print(features, labels)

"""


# training loop

num_epochs = 2

total_samples = len(dataset)

n_iterations = math.ceil(total_samples/4)

print(total_samples, n_iterations)


for epoch in range(num_epochs):

  for i, (inputs, labels) in enumerate(dataloader):

    #forward, backward, updata

    if (i+1) % 5 == 0:

      print(f'epoch {epoch+1}/{num_epochs}, step {i+1}/{n_iterations}, inputs {inputs.shape}')

PyTorch Tutorial 09 - Dataset and Dat...的评论 (共 条)

分享到微博请遵守国家法律