Оба верны. Один использует двоичную классификацию, а другой - категориальную. Попробуем найти различия.
Двоичная классификация: в этом случае выходной слой имеет только один нейрон. По выходному сигналу единственного нейрона вы должны решить, кошка это или собака. Вы можете установить любой пороговый уровень для классификации вывода. Допустим, кошки обозначены как 0, а собаки - как 1, а ваше пороговое значение равно 0,5. Итак, если результат больше 0,5, то это собака, потому что оно ближе к 1, иначе это кошка. В этом случае для большинства случаев используется binary_crossentropy.
Категориальная классификация: количество выходных слоев точно такое же, как количество классов. На этот раз вам не разрешено помечать данные как 0 или 1. Форма метки должна быть такой же, как у выходного слоя. В вашем случае ваш выходной слой имеет два нейрона (для классов). Таким же образом вам придется маркировать свои данные. Для этого вам нужно будет закодировать данные вашей этикетки. Мы называем это «горячим кодированием». Например, кошки будут закодированы как (1,0), а собаки будут закодированы как (0,1). Теперь в вашем прогнозе будет два числа с плавающей запятой. Если первое число больше второго, это кошка, иначе это собака. Мы называем это числами - оценка уверенности. Скажем, для тестового изображения ваша модель предсказала (0,70, 0,30). Это означает, что ваша модель на 70% уверена, что это кошка, и на 30% - что это собака. Обратите внимание, что значение выходного слоя полностью зависит от активации вашего слоя. Чтобы узнать больше, прочтите о функциях активации.