web-dev-qa-db-fra.com

Keras model load_weights for Neural Net

J'utilise la bibliothèque Keras pour créer un réseau neuronal en python. J'ai chargé les données d'entraînement (fichier txt), lancé le réseau et "ajusté" les poids du réseau neuronal. J'ai ensuite écrit du code pour générer le texte de sortie. Voici le code:

#!/usr/bin/env python

# load the network weights
filename = "weights-improvement-19-2.0810.hdf5"
model.load_weights(filename)
model.compile(loss='categorical_crossentropy', optimizer='adam')

Mon problème est: lors de l'exécution, l'erreur suivante se produit:

 model.load_weights(filename)
 NameError: name 'model' is not defined

J'ai ajouté ce qui suit mais l'erreur persiste:

from keras.models import Sequential
from keras.models import load_model

Toute aide serait appréciée.

8
Deadulus

vous devez d'abord créer l'objet réseau appelé model, le compiler et seulement après avoir appelé la model.load_weights(fname)

exemple de travail:

from keras.models import Sequential
from keras.layers import Dense, Activation


def build_model():
    model = Sequential()

    model.add(Dense(output_dim=64, input_dim=100))
    model.add(Activation("relu"))
    model.add(Dense(output_dim=10))
    model.add(Activation("softmax"))

    # you can either compile or not the model
    model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
    return model


model1 = build_model()
model1.save_weights('my_weights.model')


model2 = build_model()
model2.load_weights('my_weights.model')

# do stuff with model2 (e.g. predict())

Enregistrer et charger un modèle entier

dans Keras, nous pouvons enregistrer et charger le modèle entier comme ceci (plus d'informations ici ):

from keras.models import load_model

model1 = build_model()
model1.save('my_model.hdf5')

model2 = load_model('my_model.hdf5')
# do stuff with model2 (e.g. predict()
19
ShmulikA