1
我有一個神經網絡,其工作是分類10個類。此外,我希望這10個班級分爲2個班級(正向 - > 3,負向 - > 7)。我怎樣才能在keras中實現這一點?如何在keras中添加兩個輸出分類層?
我有一個神經網絡,其工作是分類10個類。此外,我希望這10個班級分爲2個班級(正向 - > 3,負向 - > 7)。我怎樣才能在keras中實現這一點?如何在keras中添加兩個輸出分類層?
這聽起來像你正試圖解決兩個不同但密切相關的問題。我建議您訓練您的第一個模型以預測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具有低學習速率。
感謝您的答案,但你可以告訴如何創建模型的副本,以及如何使用它作爲第二個模型的輸入 – goku2rider
我會嘗試和今天結束時用一些代碼更新這個 – Imran
好吧,我有添加了一些(未經測試的!)代碼。希望有所幫助。 – Imran