Keras NN中的输入节点

2024-04-18 06:26:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个基于虹膜数据集的神经网络。我有四个维度的输入。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'])

Tags: addinputmodel节点init神经网络activationdense
2条回答

回答你的主要问题“这是怎么工作的?”地址:

从概念的角度来看,您最初创建的是一个具有3个层的完全连接或密集的神经网络:具有4个节点的输入层、具有4个节点的隐藏层和具有3个节点的输出层。输入层中的每个节点与隐藏层中的每个节点都有一个连接,隐藏层中的每个节点与输出层中的每个节点都有一个连接。你知道吗

在第二个示例中,您刚刚将隐藏层中的节点数从4增加到8。一个更大的网络可能是好的,因为它可以训练为“寻找”更多的东西在您的数据。但是层太大,你可能会过度适应;这意味着网络记住了太多的训练数据,而实际上它只需要对训练数据有一个大致的了解,这样它仍然可以识别稍微不同的数据,这是你的测试数据。你知道吗

您可能没有看到性能提高的原因可能是过度拟合或您的激活函数;请在隐藏层中尝试relu以外的函数。在尝试了几个不同的函数组合之后,如果没有看到任何改进,则可能是过度拟合。你知道吗

希望这有帮助。你知道吗

上次激活时出错。使用softmax而不是sigmoid并再次运行。你知道吗

替换

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

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

相关问题 更多 >