Keras modèle.résumé() résultat de Comprendre le nombre de Paramètres
J'ai un simple NN modèle pour la détection de la main écrit des chiffres d'un 28x28px image écrit en python à l'aide de Keras (Théano backend):
model0 = Sequential()
#number of epochs to train for
nb_epoch = 12
#amount of data each iteration in an epoch sees
batch_size = 128
model0.add(Flatten(input_shape=(1, img_rows, img_cols)))
model0.add(Dense(nb_classes))
model0.add(Activation('softmax'))
model0.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])
model0.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch,
verbose=1, validation_data=(X_test, Y_test))
score = model0.evaluate(X_test, Y_test, verbose=0)
print('Test score:', score[0])
print('Test accuracy:', score[1])
Cela fonctionne bien et je reçois ~90% de précision. J'ai ensuite exécuter la commande suivante pour obtenir un résumé de ma structure du réseau en faisant print(model0.summary())
. Ce résultats suivants:
Layer (type) Output Shape Param # Connected to
=====================================================================
flatten_1 (Flatten) (None, 784) 0 flatten_input_1[0][0]
dense_1 (Dense) (None, 10) 7850 flatten_1[0][0]
activation_1 (None, 10) 0 dense_1[0][0]
======================================================================
Total params: 7850
Je ne comprends pas comment ils arrivent à 7850 total params et ce que cela signifie réellement?
Vous devez vous connecter pour publier un commentaire.
Le nombre de paramètres est 7850 parce qu'avec tout ce qui est caché unité que vous avez 784 entrée en poids et un poids de connexion avec le biais. Cela signifie que tout ce qui est caché, vous permet de 785 paramètres. Vous avez 10 unités de sorte qu'il se résume 7850.
Mise à JOUR :
Le rôle de cet autre biais terme qui est vraiment important. Il augmente considérablement la capacité de votre modèle. Vous pouvez lire les détails par exemple ici :
Rôle de Biais dans les Réseaux de Neurones
Je nourrir 514 dimensions réelle-valeur d'entrée d'un
Sequential
modèle dans Keras.Mon modèle est construit de la manière suivante :
Quand j'ai l'impression
model.summary()
j'ai le résultat suivant:Pour la dense_1 couche , le nombre de paramètres est 264710.
C'est obtenue comme suit : 514 (valeurs d'entrée) * 514 (neurones dans la première couche) + 514 (bias)
Pour dense_2 couche, le nombre de paramètres est 132355.
C'est obtenue comme suit : 514 (valeurs d'entrée) * 257 (neurones de la deuxième couche) + 257 (bias pour les neurones de la deuxième couche)
Le "néant" dans la forme signifie qu'il ne dispose pas d'un nombre pré-défini. Par exemple, il peut être la taille du lot que vous utilisez au cours de la formation, et que vous voulez la rendre souple en n'attribuant une valeur à de sorte que vous pouvez changer la taille des lots. Le modèle de déduire la forme du contexte de l'couches.
Pour obtenir des nœuds connectés à chaque couche, vous pouvez effectuer les opérations suivantes:
La façon la plus simple pour calculer le nombre de neurones à une couche:
Param value /(nombre de parts * 4)
Par exemple dans Paul Lo's réponse , le nombre de neurones à une couche est 264710 /(514 * 4 ) = 130
Nombre de paramètres est la quantité de numéros qui peuvent être modifiés dans le modèle. Mathématiquement, cela signifie que le nombre de dimensions de votre problème d'optimisation. Pour vous en tant que programmeur, chacun de ces paramètres est un nombre à virgule flottante, ce qui prend généralement 4 octets de mémoire, vous permettant de prédire la taille de ce modèle, une fois enregistré.
Cette formule pour ce nombre est différent pour chaque réseau de neurones de type de couche, mais pour la couche Dense, c'est simple: chaque neurone a un biais paramètre et un poids par entrée:
N = n_neurons * ( n_inputs + 1)
.Pour Les Couches Denses:
Pour Conv Couches:
Envisager l'exemple suivant,
Calcul params,