Keras NN中的输入节点

时间:2018-08-20 12:16:25

标签: python machine-learning neural-network keras

我正在尝试基于虹膜数据集创建神经网络。我有四个方面的输入。 X = dataset[:,0:4].astype(float)。然后,我创建了一个具有四个节点的神经网络。

model = Sequential()
model.add(Dense(4, input_dim=4, init='normal', activation='relu'))
model.add(Dense(3, init='normal', activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

据我了解,我将每个维度传递给单独的节点。四个维度-四个节点。当我创建具有8个输入节点的神经网络时,它如何工作?性能仍然与4个节点相同。

model = Sequential()
model.add(Dense(8, input_dim=4, init='normal', activation='relu'))
model.add(Dense(3, init='normal', activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

2 个答案:

答案 0 :(得分:2)

您上一次激活时出错。使用softmax代替sigmoid,然后再次运行。

替换

model.add(Dense(3, init='normal', activation='sigmoid'))

使用

model.add(Dense(3, init='normal', activation='softmax'))

答案 1 :(得分:1)

回答您的主要问题“这是如何工作的?”:

从概念上讲,您最初将创建一个具有3层的完全连接的或密集的神经网络:4层的输入层,4层的隐藏层和3层的输出层。输入层中的每个节点都与隐藏层中的每个节点都有连接,隐藏层也与输出层中的每个节点都有连接。

在第二个示例中,您只是将隐藏层中的节点数从4个增加到8个。较大的网络可能很好,因为可以训练它“寻找”数据中的更多内容。但是一层太大了,您可能会过度拟合;这意味着网络确实记住了太多的训练数据,而实际上它只需要训练数据的一般概念,因此它仍然可以识别稍有不同的数据,这就是您的测试数据。

您可能没有看到性能提升的原因可能是过拟合或激活功能;尝试在隐藏图层中使用relu以外的功能。在尝试了几种不同的功能组合之后,如果看不到任何改进,则可能是过度拟合。

希望这会有所帮助。