$newlink = str_replace('https://', 'http://', $oldlink);
Я думаю, это могло бы помочь удалить https: // в http: //
Поскольку у вас есть четыре класса и активация softmax на последнем слое, мне кажется очень маловероятным, что ваш выбор class_mode='binary'
для flow_from_directory()
и loss='sparse_categorical_crossentropy'
для classifier.compile()
правильный. Сгенерированные таким образом метки не будут иметь смысла.
class_mode='binary'
будет генерировать метки в форме [0,1,1,0,1,1,...]
, которые имеют смысл только для прогнозирования да / нет (следовательно, «двоичный»), в то время как loss='sparse_categorical_crossentropy'
ожидает метки в форме [1,3,2,4,3,2,1,2,...]
(одно целое число для каждого класса ). [1 122]
Попробуйте вместо class_mode='categorical'
и loss='categorical_crossentropy'
. Это сгенерирует ярлыки с горячим кодированием, например
[[0,0,1,0],
[0,1,0,0],
[0,0,0,1],
... ]
, что именно то, что loss='categorical_crossentropy'
ожидает получить. Также выбор activation='softmax'
в последнем слое идеально подходит для этого, так как он гарантирует, что четыре значения в последнем слое всегда суммируют ap с 1
.
Относительно ваших вопросов:
val_acc
перестанет расти. Да, в вашем случае эта точка достигается уже после двух эпох. Но для хороших моделей это обычная практика. У вашего понимания есть недостаток: отличные результаты на тренировочных данных - не цель! Помните, в конце концов, вы хотите, чтобы ваша модель предсказывала изображения, которых она никогда не видела прежде, поэтому только данные проверки говорят вам правду. (На самом деле, еще лучше иметь еще один тестовый набор данных, который никогда не затрагивался во время обучения, и сравнить его с этим в самом конце после вызова fit
или fit_generator
.