Вам определенно нужно использовать categorical_crossentropy
для решения проблемы мультиклассификации. binary_crossentropy
сведет вашу проблему к проблеме бинарной классификации неясным способом, без дальнейшего ее изучения.
Я бы сказал, что причина, по которой вы видите высокую точность в первом (и в некоторой степени во втором) случае, в том, что вы переоснащаете себя. Первый плотный слой, который вы добавляете, содержит 8 миллионов параметров (!!!, чтобы увидеть, что делают model.summary()
), и у вас есть только 70 000 изображений, чтобы обучить его с 8 эпохами. Этот архитектурный выбор очень требователен как к вычислительной мощности, так и к требованиям к данным. Вы также используете очень простой оптимизатор (SGD
). Попробуйте использовать более мощный Adam
.
Наконец, я немного удивлен, что вы выбрали 'sigmoid'
функцию активации в выходном слое. Почему не более классический 'softmax'
?