En ce moment, votre deuxième modèle répond toujours « classe 0 » car il peut choisir entre une seule classe (nombre de sorties de votre dernière couche).
Comme vous avez deux classes, vous devez calculer le softmax + categorical_crossentropy sur deux sorties pour choisir le plus probable.
Par conséquent, votre dernière couche doit être:
model.add(Dense(2, activation='softmax')
model.compile(...)
Votre modèle sigmoïde + binary_crossentropy, qui calcule la probabilité de « classe 0 » être vrai en analysant un seul numéro de sortie, est déjà correct.
EDIT: Voici une petite explication sur la fonction Sigmoid
sigmoïde peut être considéré comme une correspondance entre l'espace réel de chiffres et un espace de probabilité.
Notez que:
Sigmoid(-infinity) = 0
Sigmoid(0) = 0.5
Sigmoid(+infinity) = 1
Donc, si le nombre réel, la production de votre réseau, est très faible, le sigmoïde décidera de la probabilité de « Classe 0 » est proche de 0, et décider « classe 1 »
au contraire, si la sortie de votre réseau est très élevé, le sigmoïde décidera la probabilité de « classe 0 » est proche de 1, et de décider « classe 0 »
Sa décision je s similaire à la décision de la classe uniquement en regardant le signe de votre sortie. Cependant, cela ne permettrait pas à votre modèle d'apprendre! En effet, le gradient de cette perte binaire est nul presque partout, rendant impossible pour votre modèle d'apprendre de l'erreur, car il n'est pas quantifié correctement. C'est pourquoi sigmoid et "binary_crossentropy" sont utilisés:
Ils sont un substitut à la perte binaire, qui a de bonnes propriétés lisses, et permet l'apprentissage.
En outre, s'il vous plaît trouver plus d'informations sur Softmax Function et Cross Entropy
Pourriez-vous s'il vous plaît nous montrer le code utilisé? Peut-être que la réponse se trouve quelque part caché dans votre description. Je suppose qu'il y a officiellement plus de 2 classes dans votre second classificateur, car 40% de précision est encore pire qu'un classificateur binaire aléatoire. –
Une fois que vous avez trouvé une solution qui vous convient, cliquez sur la coche à côté de cette réponse pour l'accepter. Cela permet aux autres personnes avec votre problème de savoir quelle solution fonctionne pour vous. –