CNN モデルに転移学習を適用しようとしていますが、以下のエラーが発生します。
model = model1(weights = "model1_weights", include_top=False)
—-
TypeError: __call__() takes exactly 2 arguments (1 given)
ありがとう
CNN モデルに転移学習を適用しようとしていますが、以下のエラーが発生します。
model = model1(weights = "model1_weights", include_top=False)
—-
TypeError: __call__() takes exactly 2 arguments (1 given)
ありがとう
カスタム モデルを使用して転移学習を使用しようとしている場合、答えはモデル アーキテクチャ (説明) と重みを保存した方法によって異なります。
keras の load_model メソッドを使用して、モデルを簡単にロードできます。
from keras.models import load_model
model = load_model("model_path.h5")
最初に json ファイルからモデルの説明をロードしてから、モデルの重みをロードできます。
form keras.models import model_from_json
with open("path_to_json_file.json") as json_file:
model = model_from_json(json_file.read())
model.load_weights("path_to_weights_file.h5")
古いモデルがロードされた後、破棄するレイヤー (通常、これらのレイヤーは完全に接続された最上位レイヤー) とフリーズするレイヤーを決定できます。モデルの最初の 5 つのレイヤーを再度トレーニングせずに使用し、次の 3 つを再度トレーニングし、最後のレイヤーを破棄するとします (ここでは、ネットワーク レイヤーの数が 8 より大きいと仮定しています)。最後の層の後に 3 つの全結合層を追加します。これは次のように行うことができます。
for i in range(5):
model.layers[i].trainable = False
for i in range(5,8):
model.layers[i].trainable = True
ll = model.layers[8].output
ll = Dense(32)(ll)
ll = Dense(64)(ll)
ll = Dense(num_classes,activation="softmax")(ll)
new_model = Model(inputs=model.input,outputs=ll)