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

Neural network 如何在keras中添加两个输出分类层?,neural-network,deep-learning,keras,Neural Network,Deep Learning,Keras,我有一个神经网络,它的工作是对10个类进行分类。此外,我希望将这10个类分为2类(正->3,负->7)。我如何在keras中实现这一点?听起来您正在试图解决两个不同但密切相关的问题。我建议您训练您的第一个模型来预测10个类,然后创建第一个模型的副本(包括权重),除了使用不同的输出层来支持二进制分类之外。此时,您可以: 只训练最后的密集层和新的输出层,或者 以较低的学习率培训整个模型 有关更多信息,请阅读 示例代码: model.save('model_1') # load this to ret

我有一个神经网络,它的工作是对10个类进行分类。此外,我希望将这10个类分为2类(正->3,负->7)。我如何在keras中实现这一点?

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

  • 只训练最后的密集层和新的输出层,或者
  • 以较低的学习率培训整个模型
  • 有关更多信息,请阅读

    示例代码:

    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。

    谢谢你的回答,但是你能告诉我如何创建模型副本以及如何将其用作第二个模型的输入吗?我将尝试在今天年底前用一些代码对其进行更新。好的,我添加了一些(未经测试的!)代码。希望有帮助。