Comment charger un modèle à partir d'une HDF5 fichier dans Keras?
Comment charger un modèle à partir d'une HDF5 fichier dans Keras?
Ce que j'ai essayé:
model = Sequential()
model.add(Dense(64, input_dim=14, init='uniform'))
model.add(LeakyReLU(alpha=0.3))
model.add(BatchNormalization(epsilon=1e-06, mode=0, momentum=0.9, weights=None))
model.add(Dropout(0.5))
model.add(Dense(64, init='uniform'))
model.add(LeakyReLU(alpha=0.3))
model.add(BatchNormalization(epsilon=1e-06, mode=0, momentum=0.9, weights=None))
model.add(Dropout(0.5))
model.add(Dense(2, init='uniform'))
model.add(Activation('softmax'))
sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy', optimizer=sgd)
checkpointer = ModelCheckpoint(filepath="/weights.hdf5", verbose=1, save_best_only=True)
model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2, callbacks=[checkpointer])
Le code ci-dessus avec succès sauve le meilleur modèle dans un fichier nommé poids.hdf5. Ce que je veux faire est ensuite charger ce modèle. Le code ci-dessous montre comment j'ai essayé de le faire:
model2 = Sequential()
model2.load_weights("/Users/Desktop/SquareSpace/weights.hdf5")
C'est l'erreur que je reçois:
IndexError Traceback (most recent call last)
<ipython-input-101-ec968f9e95c5> in <module>()
1 model2 = Sequential()
----> 2 model2.load_weights("/Users/Desktop/SquareSpace/weights.hdf5")
/Applications/anaconda/lib/python2.7/site-packages/keras/models.pyc in load_weights(self, filepath)
582 g = f['layer_{}'.format(k)]
583 weights = [g['param_{}'.format(p)] for p in range(g.attrs['nb_params'])]
--> 584 self.layers[k].set_weights(weights)
585 f.close()
586
IndexError: list index out of range
Vous devez vous connecter pour publier un commentaire.
load_weights
définit uniquement le poids de votre réseau. Vous devez toujours définir son architecture avant d'appelerload_weights
:from keras.models import load_model
puismodel = load_model('model.h5')
Si vous avez stocké le modèle complet, non seulement le poids, dans la HDF5 fichier, puis c'est aussi simple que
encoder = autoencoder.layers[0] encoder.get_weights()
Mais je suis arriver:FailedPreconditionError: Attempting to use uninitialized value lstm_1/kernel
Voir l'exemple de code suivant sur la façon de Construire une base Keras, réseau Neuronal Modèle, Modèle d'enregistrement (JSON) & Poids (HDF5) et de les charger:
Selon la documentation officielle
https://keras.io/getting-started/faq/#how-can-i-install-hdf5-or-h5py-to-save-my-models-in-keras
que vous pouvez faire :
premier test si vous avez h5py installé en exécutant la
importation h5py
si vous n'avez pas d'erreurs lors de l'importation h5py vous êtes bon à enregistrer:
Si vous avez besoin d'installer h5py http://docs.h5py.org/en/latest/build.html
J'ai fait de cette façon