Я испытываю очень похожую проблему, описанную здесь . Я построил довольно простую нейронную сеть для выполнения мультиклассовой классификации нескольких меток на наборе данных Pascal VO C.
Вот архитектура, которую я использовал:
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(20, activation='sigmoid'))
model.summary()
model.compile(loss='binary_crossentropy',
optimizer=optimizers.RMSprop(lr=1e-4),
metrics=['acc'])
Изначально я был счастлив достичь высокой точности:
- Точность теста: 0,9270516037940979
- Потеря теста: 0,24367780983448029
Однако, когда я строю график обучения и проверки достоверности, я обратите внимание, что кривая плоская после одной эпохи.
Разница с вопросом SO, связанным выше, заключается в том, что моя потеря тренировок постоянно уменьшается в течение эпох, что можно наблюдать здесь:
Поскольку уровень ошибок по-прежнему уменьшается, можем ли мы сделать вывод, что моя модель достаточно сложна? Если это так, это исключает три причины, приведенные в вопросе SO.