Точность модели не меняется от 0,5% (0,0050) - PullRequest
0 голосов
/ 19 июня 2020

Я обучаю модель CNN для классификации изображений с использованием Keras. Я использую модель VGG19 и настраиваемый набор данных с 200 классами и равномерно распределенными 90000 обучающих изображений, 10000 проверочных изображений и 10000 тестовых изображений. Несмотря на то, что обучение проводится в 200 эпох, точность остается постоянной 0,0050. То же самое с потерей 5,2988. Я использую экземпляр TPU Kaggle для запуска этой модели.

Как я могу сделать модель более точной? Можете ли вы предложить для этой цели какие-либо другие предварительно обученные модели?

1 Ответ

1 голос
/ 19 июня 2020

Ваша модель CNN ведет себя как случайная модель.

Я знаю это, потому что, поскольку существует 200 классов, вероятность получения правильного класса случайным образом составляет 1/200 = 0,0050, что является вашей точностью.

Это происходит, когда вы используете tenorflow / keras API вместо последовательного ()

Поскольку вы используете VGG19, если вы пытаетесь использовать переносное обучение, возможно, вы заморозил не тот слой .

Если вы используете API, вам нужно сделать

model = Model(inputs = input_layer, outputs = output_layer)    #which is not required in sequential()

print(model.layers)      # if you are using API or sequential() this is used to check your layers

Затем вам нужно заморозить необходимый слой как

model.layers[index_of_freeze_layer].trainable  = False

Если вы не замораживаете слои модели , попробуйте использовать более низкую скорость обучения, поскольку VGG19 очень чувствителен к скорости обучения. (0,00001 или меньше зависит)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...