如何在keras中添加两个输出分类图层?

时间:2017-07-19 18:12:31

标签: neural-network deep-learning keras

我有一个神经网络,其工作是对10个类进行分类。此外,我希望将这10个类分为2类(正 - > 3,负 - > 7)。我怎样才能在keras中实现这一目标?

1 个答案:

答案 0 :(得分:2)

听起来你正试图解决两个不同但密切相关的问题。我建议你训练你的第一个模型来预测10个类,然后你创建第一个模型的副本(包括权重),除了不同的输出层以支持二进制分类。此时你可以:

  1. 仅训练您的最终密集图层和新输出图层,或
  2. 以较低的学习率训练整个模型
  3. 有关详细信息,请参阅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。