Загрузчик данных pytorch очень медленный с данными hdf5Python

Программы на Python
Anonymous
Загрузчик данных pytorch очень медленный с данными hdf5

Сообщение Anonymous »

У меня очень большой набор данных в формате hdf5, который я не могу загрузить в память сразу. Я использую собственный набор данных из Torch, вот код

Код: Выделить всё

import time
from utils import get_vocab_and_skipgrams
from torch.utils.data import Dataset
from torch.utils.data import DataLoader
import os
import h5py
import numpy as np
import torch

class CustomSkipGramDataset(Dataset):
def __init__(self, filename, window_size, data_dir="training_data", data_exists=True):
self.window_size = window_size
self.filename = filename
self.data_exists = data_exists
self.vocab_path = os.path.join(data_dir, "vocab.npy")
self.hdf5_path = os.path.join(data_dir, "skipgram.h5")

if not data_exists:
get_vocab_and_skipgrams(filename, data_dir)

self.vocab = np.load(self.vocab_path, allow_pickle=True).tolist()
self.vocab_size = len(self.vocab)
self.hf = h5py.File(self.hdf5_path, "r")
self.dataset = self.hf["positive_skips"]

def __len__(self):
return self.dataset.shape[0]

def __getitem__(self, index):

x, y = self.dataset[index]
return x, y
Теперь, когда я загружаю его напрямую, вот так

Код: Выделить всё

with h5py.File("./training_data/skipgram.h5") as hf:
dataset = hf["positive_skips"]
for a in range(1,100):
print(torch.tensor(dataset[a:100*a]))

это действительно очень быстро по сравнению с пользовательским набором данных Torch. Почти в 100 раз быстрее. Я знаю, что делаю что-то не так.

Подробнее здесь: https://stackoverflow.com/questions/786 ... -hdf5-data

Вернуться в «Python»