J'ai quelques problèmes pour comprendre les modèles de DNN en utilisant la normalisation par batch, en particulier en utilisant keras. Quelqu'un peut-il m'expliquer la structure et le contenu de chaque couche dans ce modèle que j'ai construit?Questions théoriques sur les couches en dnn avec la normalisation par batch en utilisant keras
modelbatch = Sequential()
modelbatch.add(Dense(512, input_dim=1120))
modelbatch.add(BatchNormalization())
modelbatch.add(Activation('relu'))
modelbatch.add(Dropout(0.5))
modelbatch.add(Dense(256))
modelbatch.add(BatchNormalization())
modelbatch.add(Activation('relu'))
modelbatch.add(Dropout(0.5))
modelbatch.add(Dense(num_classes))
modelbatch.add(BatchNormalization())
modelbatch.add(Activation('softmax'))
# Compile model
modelbatch.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Train the model
start = time.time()
model_info = modelbatch.fit(X_2, y_2, batch_size=500, \
epochs=20, verbose=2, validation_data=(X_test, y_test))
end = time.time()
Ceci est, je pense, toutes les couches de mon modèle:
print(modelbatch.layers[0].get_weights()[0].shape)
(1120, 512)
print(modelbatch.layers[0].get_weights()[1].shape)
(512,)
print(modelbatch.layers[1].get_weights()[0].shape)
(512,)
print(modelbatch.layers[1].get_weights()[1].shape)
(512,)
print(modelbatch.layers[1].get_weights()[2].shape)
(512,)
print(modelbatch.layers[1].get_weights()[3].shape)
(512,)
print(modelbatch.layers[4].get_weights()[0].shape)
(512, 256)
print(modelbatch.layers[4].get_weights()[1].shape)
(256,)
print(modelbatch.layers[5].get_weights()[0].shape)
(256,)
print(modelbatch.layers[5].get_weights()[1].shape)
(256,)
print(modelbatch.layers[5].get_weights()[2].shape)
(256,)
print(modelbatch.layers[5].get_weights()[3].shape)
(256,)
print(modelbatch.layers[8].get_weights()[0].shape)
(256, 38)
print(modelbatch.layers[8].get_weights()[1].shape)
(38,)
print(modelbatch.layers[9].get_weights()[0].shape)
(38,)
print(modelbatch.layers[9].get_weights()[1].shape)
(38,)
print(modelbatch.layers[9].get_weights()[2].shape)
(38,)
print(modelbatch.layers[9].get_weights()[3].shape)
(38,)
Je vous saurais gré de votre aide, merci à l'avance.
oui, merci, c'est plus clair, mais juste les 4 paramètres de la normalisation par lots, je ne sais pas si je pourrais utiliser pour évaluer avec d'autres données (comment savoir, il est possible de sauvegarder des modèles dans keras ou dans le cas d'un DNN simple vous pouvez prendre les poids et biais avec model.layers.get_weights() pour évaluer une autre donnée), donc, je vais faire la même chose, dans ce cas en utilisant la normalisation par lots, mais je ne sais pas lequel de toutes les couches a montré est nécessaire de prendre pour évaluer dans un autre environnement? Merci d'avance! –
Vous voulez dire que vous voulez utiliser le modèle que vous avez appris pour faire des prédictions sans l'API Keras et que vous voulez copier tous vos poids et votre architecture dans quelque chose d'autre? – Nathan
oui, comme par exemple avec un simple DNN je reçois les poids avec ceci: 'weights1 = modelbatch.layers [0] .get_weights() [0]' #Le 1 couche cachée 'biases1 = ...' 'weights2 = modelbatch.layers [1] .get_weights() [0] '#Couche 2 cachée ' biases2 = ..... ' ' weights3 = modelbatch.layers [4] .get_weights() [0] '#Le # couche de sortie 'biases3 = ....' –