У меня ранее были эти «data_transforms», которые я использовал для создания загрузчика данных:
data_transforms_train = transforms.Compose([
transforms.Resize((512, 512)),
transforms.RandomVerticalFlip(),
transforms.RandomHorizontalFlip(),
transforms.ToTensor()
])
Все работало нормально, и я мог без проблем тренировать свою модель.
Я решил включитьшаг нормализации в конце преобразований:
data_transforms_train = transforms.Compose([
transforms.Resize((512, 512)),
transforms.RandomVerticalFlip(),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize(mean=[0.8979], std=[0.3025])
])
Добавление этого запуска вызвало сбой моего ноутбука. Другими словами, я не получил сообщение об ошибке Python, но ядро ноутбука продолжало зависать и перезапускаться.
Сначала я подумал, что это ошибка памяти, поэтому я изменил свой batch_size на 1, чтобы проверить, но это не былопроблема.
Я попытался проверить, поэтому применил преобразования по одному и скопировал исходный код "to_normalize" из https://pytorch.org/docs/stable/_modules/torchvision/transforms/functional.html
training_set = Dataset(partition['train'], labels, transform=None)
d = transforms.functional.resize(training_set.__getitem__(3)[0], (512,512))
x = transforms.functional.to_tensor(d)
# Normalization code
mean, std = [0.7], [0.3025]
mean, std = torch.as_tensor(mean, dtype=x.dtype, device=x.device), torch.as_tensor(std, dtype=x.dtype, device=x.device)
Пока все хорошо. Когда я добавляю это:
tensor.sub_(mean[:, None, None]).div_(std[:, None, None])
Ноутбук снова вылетает (без ошибок Python, только сбой и перезапуск ядра). Когда я изолировал части, оказалось, что среднее значение [:, Нет, Нет] (или / также std [:, Нет, Нет]) приводит к сбою ноутбука.
Кто-нибудь знает, почему это происходит?