Hier ist im Grunde das, was ich tue:
Code: Select all
import torch
from torch.utils.data import Dataset, DataLoader
import numpy as np
class CustomDataset(Dataset):
def __init__(self, data_paths):
self.data_paths = data_paths
def __len__(self):
return len(self.data_paths)
def __getitem__(self, idx):
image = np.load(self.data_paths[idx]['image']).astype(np.float32)
label = np.load(self.data_paths[idx]['label']).astype(np.int64)
image = torch.tensor(image).cuda()
label = torch.tensor(label).cuda()
return image, label
data_paths = [{'image': f'img_{i}.npy', 'label': f'label_{i}.npy'} for i in range(10000)]
dataset = CustomDataset(data_paths)
dataloader = DataLoader(dataset, batch_size=32, num_workers=4, pin_memory=True)
for epoch in range(10):
for batch in dataloader:
images, labels = batch
output = images.mean()
loss = output.sum()
loss.backward()
del images, labels, loss, output
torch.cuda.empty_cache()
[*] Einstellen num_workers = 0 (nicht geholfen)
[*] Verwenden von .detach () Bevor Sie die Tensoren in GPU
[*] überprüft haben, ob das Problem in meinem Modell ist, aber auch ohne das Modell das Laden der Daten bereits den Speicher erhöht
hat jemand das schon einmal gesehen? Gibt es etwas über Dataloader und CUDA () , das dies verursachen könnte?
würde Ideen schätzen. Ich habe keine Dinge, um es zu versuchen,