Я тренирую 2 разных CNN (пользовательское и трансферное обучение) для задачи классификации изображений.Я использую один и тот же генератор для обеих моделей.Набор данных содержит 5000 образцов для 5 классов, но не сбалансирован.
Вот пользовательская модель, которую я использую.
def __init__(self, transfer_learning = False, lambda_reg = 0.001, drop_out_rate = 0.1):
if(transfer_learning == False):
self.model = Sequential();
self.model.add(Conv2D(32, (3,3), input_shape = (224,224,3), activation = "relu"))
self.model.add(MaxPooling2D(pool_size = (2,2)))
self.model.add(Conv2D(64, (1,1), activation = "relu"))
self.model.add(MaxPooling2D(pool_size = (2,2)))
self.model.add(Conv2D(128, (3,3), activation = "relu"))
self.model.add(MaxPooling2D(pool_size = (2,2)))
self.model.add(Conv2D(128, (1,1), activation = "relu"))
self.model.add(MaxPooling2D(pool_size = (2,2)))
self.model.add(Flatten())
self.model.add(Dense(512))
self.model.add(Dropout(drop_out_rate))
self.model.add(Dense(256))
self.model.add(Dropout(drop_out_rate))
self.model.add(Dense(5, activation = "softmax"))
Так что я не могу понять связь между steps_per_epoch
и batch_size
.batch_size
- количество сэмплов, которые посылает генератор.Но является ли steps_per_epoch
число batch_size
для завершения одной тренировочной эпохи?Если так, то должно быть: steps_per_epoch = total_samples/batch_size
?
Какое бы значение я ни пытался, у меня всегда возникает одна и та же проблема (на обеих моделях), val_acc
, кажется, достигает локального оптимума.