web-dev-qa-db-fra.com

Keras: "doit compiler le modèle avant de l'utiliser" malgré que compile () soit utilisé

Je veux créer et former un modèle CNN à Keras pour la classification des billets. La création de modèles fonctionne très bien avec des didacticiels simples mais pas avec l'architecture que j'adopte à partir de cela papier . Keras affiche: RuntimeError('You must compile your model before using it.') après l'appel de fit_generator().

J'utilise le backend tensorflow si cela est pertinent.


Le modèle est défini dans model.py:

from keras.layers import ...
model = Sequential() 
model.add(some_layer)

... #according to the paper

model.add(some_layer)
model.add(Dense(#output_classes, activation='softmax') #last layer

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

Le model est alors utilisé à partir de start_train.py:

from model import model as m

#some ImageGenerator stuff as input

m.fit_generator( #training on train_data
        train_pics,
        steps_per_Epoch=#steps,
        epochs=#epochs,
        validation_data=test_pics,

Pour autant que je l'ai compris, le processus à Keras est le suivant:

  1. Définir le modèle
  2. Compiler le modèle
  3. (Si vous souhaitez évaluer () et résumé () peuvent être utilisés maintenant après la compilation)
  4. Ajuster le modèle
  5. Évaluez le modèle.

J'ai testé si model.py Est accessible avant d'appeler fit_generator() et cela fonctionne correctement. Je suis à court d'idées et je me demande ce que je fais mal, d'autant plus que la même configuration fonctionne bien avec un modèle/architecture de base.

Toute aide est grandement appréciée! :)

6
Julian Kopp

Essaye ça:

from keras.optimizers import Adam
opt = keras.optimizers.Adam(use your own learning rate)
model.compile(optimizer=opt, loss="categorical_crossentropy", metrics=model.compile(optimizer=opt, loss="categorical_crossentropy", metrics=['accuracy']))
0
Aniket Sawale