Код: Выделить всё
class Dataset(torch.utils.data.Dataset):
def __init__(self, image_ids, labels):
self.image_ids = image_ids
self.labels = labels
def __len__(self):
return len(self.image_ids)
def __getitem__(self, i):
img_path = f'drive/MyDrive/images/{image_ids[i]}'
img = transforms.ToTensor()(PIL.Image.open(img_path)
label = self.labels[i]
return img, label
Tensordataset . Для этого я должен сначала создать огромный тензор всех 30000 учебных изображений, то есть формы (30000, 3, 128, 128) (каждое изображение 3x128x128), которое требует немного времени. Итак, я не могу делать это каждый раз, когда запускаю свой код, поэтому я пытаюсь сохранить этот большой тензор, но это приводит к проблемам памяти в моей колабах, что сбоятся во время выполнения. Кроме того, это как 12 ГБ, так что я уверен, что это не эффективный способ. < /P>
< /li>
< /ol>
Как я могу это сделать? Установка очень проста, но она оказалась немного раздражающей, потому что Google Drive не кажется созданным для этих вещей. У меня просто есть папка из 30 000 изображений, которые я хочу прочитать как тензоры Torch (в Minibatches для обучения) в Colab. Как лучше всего это сделать, и/или как я могу решить проблемы в подходах, которые я обсуждал выше? Но по какой -то причине чтение вещей из папки Google Drive, в которой есть много элементов (у этого есть 30 000), приводит к тому, что называется «Тайм -аутом Google Drive». Тот же процесс является тривиальным для процессора моего компьютера, но мне нужны графические процессоры для обучения, поэтому мне нужно иметь возможность сделать это на Colab. Я не знаю, как это решить.>
Подробнее здесь: https://stackoverflow.com/questions/749 ... etting-dri