Pour un réseau à anticipation (FFN), il est facile de calculer le nombre de paramètres. Avec un CNN, un LSTM, etc., existe-t-il un moyen rapide de trouver le nombre de paramètres dans un modèle keras?
Les modèles et les calques ont une méthode spéciale à cet effet:
model.count_params()
En outre, pour obtenir un bref résumé des dimensions et des paramètres de chaque couche, la méthode suivante peut s'avérer utile
model.summary()
import keras.backend as K
def size(model): # Compute number of params in a model (the actual number of floats)
return sum([np.prod(K.get_value(w).shape) for w in model.trainable_weights])
En retraçant la fonction print_summary()
, les développeurs de Keras calculent le nombre de paramètres pouvant être entraînés et non entraînés d’une model
donnée comme suit:
import keras.backend as K
import numpy as np
trainable_count = int(np.sum([K.count_params(p) for p in set(model.trainable_weights)]))
non_trainable_count = int(np.sum([K.count_params(p) for p in set(model.non_trainable_weights)]))
Étant donné que K.count_params()
est défini comme np.prod(int_shape(x))
, cette solution est assez similaire à celle d’Anuj Gupta, à l’exception de l’utilisation de set()
et de la façon dont la forme des tenseurs est récupérée.