我有一个神经网络,其工作是对10个类进行分类。此外,我希望将这10个类分为2类(正 - > 3,负 - > 7)。我怎样才能在keras中实现这一目标?
答案 0 :(得分: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)
如果你想重新训练整个模型,你可以省略除了最后两层之外的所有循环设置,并且选择一个优化器,例如学习率低的SGD。