Вот в основном то, что я делаю: < /p>
Код: Выделить всё
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()
[*] Настройка num_workers = 0 (не помог)
[*] Использование .detach () Перед перемещением тензоров в GPU
[*] Проверьте, если проблема находится в моей модели, но даже без модели, просто загрузка данных уже делает увеличение памяти
Кто -нибудь видел это раньше? Есть ли что -то в DataLoader и Cuda () , что может вызвать это? Я не могу попробовать
Подробнее здесь: https://stackoverflow.com/questions/794 ... mpty-cache