web-dev-qa-db-ja.com

Keras:compile()が使用されているにもかかわらず、「使用する前にモデルをコンパイルする必要があります」

紙幣の分類のために、ケラスでCNNモデルを作成してトレーニングしたいと思います。モデルの作成は、簡単なチュートリアルではうまくいきますが、これから採用するアーキテクチャではうまくいきません paper 。 Kerasの出力:RuntimeError('You must compile your model before using it.')が呼び出された後のfit_generator().

妥当性がある場合は、テンソルフローバックエンドを使用します。


モデルは_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'])
_

次に、modelが_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,
_

私が理解している限り、Kerasでのプロセスは次のとおりです。

  1. モデルを定義する
  2. モデルのコンパイル
  3. (必要に応じて、evaluate()およびsummary()をコンパイル後に使用できます)
  4. フィットモデル
  5. モデルを評価します。

fit_generator()を呼び出す前に_model.py_にアクセスするかどうかをテストしましたが、正しく機能します。基本的なモデル/アーキテクチャで同じ設定がうまく機能するので、私はアイデアがなくなって何が悪いのかと思います。

どんな助けでも大歓迎です! :)

6
Julian Kopp

これを試して:

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