Keras 如何读取输入数据?

How does Keras read input data?

我正在用Keras做一个项目,我不明白Keras是如何使用数据输入的,也就是说Keras在创建第一层时是如何读取我们的输入数据的。

例如:

  1. 模型=顺序()
  2. model.add(密集(10, activation='sigmoid', input_dim=3,name='layer1'))

在这个模型中,有 10 个神经元和一个 3 维输入是什么意思?如果输入数据有100个样本(矩阵数据中的行数),Keras如何使用它们?

谢谢。

input_dim=3 表示您的每个输入数据都有 3 个维度。在您的例子中,包含 100 个示例的输入数据的形状应为 (100,3)。编译模型时,示例的数量并不重要。但是您应该确保每个输入数据的维度与您在第一个密集层中设置的 input_dim 相匹配。

一个简短的例子:

model = Sequential()
model.add(Dense(10, input_dim=3, activation='sigmoid'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adamax')

model.fit(xTrain, yTrain, epochs=50, batch_size=10)

input_dim=3 表示您的数据具有 3 个特征,这些特征将用于确定最终结果,例如。如果你想确定指的是什么动物数据,你可以将宽度、高度和颜色作为数据。

100 examples 不同动物的宽度、高度和颜色组合允许神经网络调整其参数(学习)什么宽度、高度和颜色指的是哪种动物。 Keras 从神经元的随机权重开始,然后使用提供的样本一个一个地调整网络权重 100 次。 Keras 实际上使用批处理,这意味着将 100 个样本分成更小的组以获得更好的学习率和一般性能(一次存储在内存中的数据更少)。

10 neurons 是 10 'places',其中网络能够存储神经元权重和输入数据之间的乘法结果。您可以将神经元想象成一个灯泡,根据数据是否显示一些有用的数据特征,它会亮一点或暗一点。如果动物身高超过 3 米。每个神经元都有自己的一组权重,当网络检查数据中的下一个样本时,这些权重会稍微改变。最后,您应该有 10 个神经元(灯泡),它们会根据数据中不同特征的存在或多或少做出强烈反应,例如。如果动物很高。

你拥有的神经元越多,你可以追踪的可能特征就越多,例如。如果动物高大、多毛、橙色、有斑点等。但是你拥有的神经元越多,你的网络过于精确的风险也越高,并且会学习到你的训练示例所独有的特征(称为过度拟合)但不会帮助您识别未包含在训练数据中的动物样本(这称为概括能力,是实际训练神经网络的最重要的一点)。选择神经元的数量是一项实际练习,您可以在其中搜索适合您需要的神经元。

希望能解开你的疑惑。如果你想更深入地了解这个领域,网上有很多很好的资源,详细解释了神经网络训练过程,包括特征、神经元和学习。