web-dev-qa-db-fra.com

Comment trouver le nombre de paramètres d'un modèle keras?

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?

32
Anuj Gupta

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()
64
Serj Zaharchenko
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])
12
Anuj Gupta

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.