J'ai plusieurs sorties de mon modèle à partir de plusieurs couches denses. Mon modèle a 'accuracy'
comme seule mesure dans la compilation. Je voudrais savoir la perte et la précision pour chaque sortie. Ceci est une partie de mon code.
scores = model.evaluate(X_test, [y_test_one, y_test_two], verbose=1)
Quand j'ai imprimé les partitions, voici le résultat.
[0.7185557290413819, 0.3189622712272771, 0.39959345855771927, 0.8470299135229717, 0.8016634374641469]
Que représentent ces chiffres?
Je suis nouveau à Keras et cela pourrait être une question triviale. Cependant, j'ai lu les docs de Keras mais je ne suis toujours pas sûr.
Cité de evaluate()
documentation de la méthode :
Retourne
Perte de test scalaire (si le modèle ne comporte qu'une seule sortie et aucune métrique) ou liste de scalaires (si le modèle comporte plusieurs sorties et/ou métriques). L'attribut
model.metrics_names
vous donnera les étiquettes d'affichage pour les sorties scalaires.
Par conséquent, vous pouvez utiliser la propriété metrics_names
de votre modèle pour savoir à quoi correspond chacune de ces valeurs. Par exemple:
from keras import layers
from keras import models
import numpy as np
input_data = layers.Input(shape=(100,))
out_1 = layers.Dense(1)(input_data)
out_2 = layers.Dense(1)(input_data)
model = models.Model(input_data, [out_1, out_2])
model.compile(loss='mse', optimizer='adam', metrics=['mae'])
print(model.metrics_names)
affiche les éléments suivants:
['loss', 'dense_1_loss', 'dense_2_loss', 'dense_1_mean_absolute_error', 'dense_2_mean_absolute_error']
qui indique à chacun de ces nombres que vous voyez dans la sortie de la méthode evaluate
.
De plus, si vous avez plusieurs couches, ces noms dense_1
et dense_2
pourraient être un peu ambigus. Pour résoudre cette ambiguïté, vous pouvez attribuer des noms à vos calques à l'aide de l'argument name
des calques (pas nécessairement sur tous les calques, mais uniquement sur les calques d'entrée et de sortie):
# ...
out_1 = layers.Dense(1, name='output_1')(input_data)
out_2 = layers.Dense(1, name='output_2')(input_data)
# ...
print(model.metrics_names)
qui fournit une description plus claire:
['loss', 'output_1_loss', 'output_2_loss', 'output_1_mean_absolute_error', 'output_2_mean_absolute_error']