1
私は、10のクラスを分類する仕事をしているニューラルネットワークを持っています。さらに、これらの10のクラスを2つのクラス(陽性→3、陰性→7)に分類したい。どのようにケラスでこれを達成できますか?ケラスに2つの出力分類レイヤーを追加するにはどうすればよいですか?
私は、10のクラスを分類する仕事をしているニューラルネットワークを持っています。さらに、これらの10のクラスを2つのクラス(陽性→3、陰性→7)に分類したい。どのようにケラスでこれを達成できますか?ケラスに2つの出力分類レイヤーを追加するにはどうすればよいですか?
2つの異なるが密接に関連する問題を解決しようとしているようです。最初のモデルをトレーニングして10のクラスを予測し、バイナリ分類をサポートするために異なる出力レイヤーを除いて最初のモデルのコピー(ウェイトを含む)を作成することをお勧めします。この時点で、あなたはいずれかを実行できます。
とモデル全体あなたがについて読むことができます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などオプティマイザを選択することができます。
ありがとうございますが、モデルのコピーを作成する方法と、それを2番目のモデルの入力として使用する方法を教えてください – goku2rider
今日の最後にこれをいくつかのコードで更新してみます – Imran
いくつかの(テストされていない!)コードを追加しました。希望が役立ちます。 – Imran