Keras poids de charge d'un réseau de neurones / erreur lors de la prédiction de
Je suis en utilisant le Keras bibliothèque pour créer un réseau de neurones. J'ai un iPython Notebook afin de charger les données sur la formation, l'initialisation du réseau et les poids du réseau de neurones.
Enfin, j'ai enregistrer le poids en utilisant le save_weights() la méthode.
Le Code est ci-dessous :
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD
from keras.regularizers import l2
from keras.callbacks import History
[...]
input_size = data_X.shape[1]
output_size = data_Y.shape[1]
hidden_size = 100
learning_rate = 0.01
num_epochs = 100
batch_size = 75
model = Sequential()
model.add(Dense(hidden_size, input_dim=input_size, init='uniform'))
model.add(Activation('tanh'))
model.add(Dropout(0.2))
model.add(Dense(hidden_size))
model.add(Activation('tanh'))
model.add(Dropout(0.2))
model.add(Dense(output_size))
model.add(Activation('tanh'))
sgd = SGD(lr=learning_rate, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mse', optimizer=sgd)
model.fit(X_NN_part1, Y_NN_part1, batch_size=batch_size, nb_epoch=num_epochs, validation_data=(X_NN_part2, Y_NN_part2), callbacks=[history])
y_pred = model.predict(X_NN_part2) # works well
model.save_weights('keras_w')
Puis, dans un autre iPython Notebook, je veux juste utiliser ces poids et de prévoir quelques sorties valeurs entrées. J'initialise le même réseau de neurones, et puis de charger le poids.
# same headers
input_size = 37
output_size = 40
hidden_size = 100
model = Sequential()
model.add(Dense(hidden_size, input_dim=input_size, init='uniform'))
model.add(Activation('tanh'))
model.add(Dropout(0.2))
model.add(Dense(hidden_size))
model.add(Activation('tanh'))
model.add(Dropout(0.2))
model.add(Dense(output_size))
model.add(Activation('tanh'))
model.load_weights('keras_w')
#no error until here
y_pred = model.predict(X_nn)
Le problème est qu'apparemment, le load_weights méthode n'est pas assez pour avoir un modèle fonctionnel. J'obtiens une erreur :
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-17-e6d32bc0d547> in <module>()
1
----> 2 y_pred = model.predict(X_nn)
C:\XXXXXXX\Local\Continuum\Anaconda\lib\site-packages\keras\models.pyc in predict(self, X, batch_size, verbose)
491 def predict(self, X, batch_size=128, verbose=0):
492 X = standardize_X(X)
--> 493 return self._predict_loop(self._predict, X, batch_size, verbose)[0]
494
495 def predict_proba(self, X, batch_size=128, verbose=1):
AttributeError: 'Sequential' object has no attribute '_predict'
Une idée?
Merci beaucoup.
Vous devez vous connecter pour publier un commentaire.
Vous devez appeler
model.compile
. Cela peut être fait soit avant ou après lamodel.load_weights
appel, mais doit être après l'architecture du modèle est spécifié et avant lamodel.predict
appel.