Я реализовал сеть классификации изображений, чтобы классифицировать набор данных из 100 классов, используя Alexnet в качестве предварительно обученной модели и изменяя конечные выходные слои.
Я заметил, когда я загружал свои данные как
trainloader = torch.utils.data.DataLoader(train_data, batch_size=32, shuffle=False)
, я получал точность набора данных проверки около 2-3% в течение примерно 10 эпох, но когда я только изменил shuffle=True
и переобучил сеть, точность возросла до 70% в самой первой эпохе.
Мне было интересно, произошло ли это, потому что в первом случае сеть показывали один пример за другим непрерывно только для одного класса в течение нескольких случаев, что приводило к тому, что сеть делала плохие обобщения во время обучения, или есть какая-то другая причина?
Но я не ожидал, что это окажет столь радикальное влияние.
P.S .: Все код и параметры были одинаковыми для обоих случаев, кроме изменения параметра shuffle.