Вот тут очень-очень просто, что такое нейросеть
Давайте попробуем строку с network.fit (все что выше тривиально). Я весь внимание
network.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
network.fit(train_images, train_labels, epochs=5, batch_size=128)
Прекрасно, вот ссылка на документацию по функции
compile и
fit.
Итак, у нас есть нейросеть, которая состоит из большого числа параметров. Нам надо её обучить, т. е. найти хороший набор этих параметров. Метод compile позволяет сконфигурировать метод, который будет использован для поиска этого набора. Априори есть много информации о том, какие методы себя хорошо проявили при решении той или иной задачи. Поэтому можно настроить их. Одним из таким методов является
RMSprop. На начальном уровне делати выбора оптимизатора можно пока опустить, поигравшись с готовыми сетями набить руку с Python и тогда немного копать вглубь. Пока что достаточно знать, что RMSprop хороший универсальный метод. Далее, loss это используемая функция потерь, она обычно зависит от типа решаемой задачи. И для категоризации рекомендуется именно она. Массив
metrics это просто массив метрик, которые будут вычисляться при обучении модели. Обычный выбор использовать accuracy (процент данных из обучаемого набора, для которых нейросеть точно определила категорию).
fit, собственно говоря, это запуск обучения. В этот метод мы передаём изображения, на которых будет тренирвоаться наша сеть, а также истинные значения категорий для этих изображений. Также мы передаём
batch_size=128, что означает, что одновременно будет считаться потери для 128 изображений, по ним будет построет градиент, по которому мы будем двигаться в сторону уменьшения потерь. Значение 128 тут скорее компромисс между качеством и скоростью, больший размер пакета даёт лучше качество но увеличивает время расчёта. Как только порции по 128 изображений закончатся в тренировочном наборе, закончится эпоха (итерация) обучения. Таких эпох надо сделать пять (
epochs=5).
Вкратце как-то так.