2017-07-19 20 views

答えて

2

2つの異なるが密接に関連する問題を解決しようとしているようです。最初のモデルをトレーニングして10のクラスを予測し、バイナリ分類をサポートするために異なる出力レイヤーを除いて最初のモデルのコピー(ウェイトを含む)を作成することをお勧めします。この時点で、あなたはいずれかを実行できます。

  1. 列車の最終的な緻密層と、新たな出力層、または
  2. 列車のみ詳細については、低い学習率

とモデル全体あなたがについて読むことができますTransfer Learning

例コード:

model.save('model_1') # load this to retrieve your original model 
model.pop() # pop output activation layer and associated params 
model.pop() # pop final dense layer 
model.add(Dense(1), kernel_initializer='normal', activation='sigmoid') 
for layer in model.layers[:-2]: 
    layer.trainable = False 
model.compile(loss='binary_crossentropy', optimizer='nadam', metrics=['accuracy']) 
model.fit(x_train, y_train, epochs=50, batch_size=32) 

あなたがモデル全体を再教育したいなら、あなたはuntrainableにすべてが、最後の二つの層を設定するループを省略し、低学習率となSGDなどオプティマイザを選択することができます。

+0

ありがとうございますが、モデルのコピーを作成する方法と、それを2番目のモデルの入力として使用する方法を教えてください – goku2rider

+0

今日の最後にこれをいくつかのコードで更新してみます – Imran

+0

いくつかの(テストされていない!)コードを追加しました。希望が役立ちます。 – Imran

関連する問題