我是Keras的新手,想建立一个有两个输出的神经网络。 基本上,我所做的是将最后一层的密集函数设置为2,如下所示
model.add(Dense(2, activation = 'relu',kernel_initializer=RandomNormal(mean=0.0, stddev=0.05, seed=0)))
是正确的吗?
感谢您的帮助
答案 0 :(得分:2)
目前还不清楚两个输出是什么意思。到目前为止,您的网络具有单个输出大小为2 ,因为您输出单个向量。我们可以说这是多输出,因为你有2个值正在计算,但从技术上讲我们称之为单输出。这取决于您的应用程序。
实际的多输出网络是使用functional API构建的,其中有一个矢量/张量列表作为不同层的输出。在这种情况下,您可以例如:
out1 = Dense(2, activation='relu')(in)
out2 = Dense(3, activation='softmax')(in)
model = Model(in, [out1, out2])
将有2个向量作为输出。这与Dense(5)
有什么不同?那么现在我们有不同的激活并尝试预测回归以及此示例中的输入分类,您无法使用单个向量输出有效地执行此操作。
答案 1 :(得分:0)
如果您要实现的是从神经网络获得两个不同的输出,那么该实现是错误的。在那行代码中,你在Dense图层中创建了两个神经元,所以就像你试图从两个类中预测输入的类一样,在多类分类问题中,那么你做得对(只是改变激活=' softmax')
但是,如果您要做的是预测来自单个神经网络的两个不同输出,那么您将不得不使用Keras的Model api,然后基本上然后为每个输出创建不同的输出层并传递它们在实例化模型时作为列表。
如果您是Keras的新手,我强烈建议您完成此book,这确实会有所帮助。