📅  最后修改于: 2020-12-11 05:04:31             🧑  作者: Mango
我们的神经网络模型将由层的线性堆栈组成。为了定义这样的模型,我们称其为Sequential函数-
model = Sequential()
我们使用以下程序语句定义输入层,这是我们网络中的第一层:
model.add(Dense(512, input_shape=(784,)))
这将创建一个具有512个节点(神经元)和784个输入节点的层。如下图所示-
请注意,所有输入节点都完全连接到第1层,即每个输入节点都连接到第1层的所有512个节点。
接下来,我们需要为第1层的输出添加激活函数。我们将使用ReLU作为激活。使用以下程序语句添加激活函数-
model.add(Activation('relu'))
接下来,我们使用以下语句添加20%的辍学率。辍学是一种用于防止模型过度拟合的技术。
model.add(Dropout(0.2))
至此,我们的输入层已完全定义。接下来,我们将添加一个隐藏层。
我们的隐藏层将包含512个节点。隐藏层的输入来自我们先前定义的输入层。与前面的情况一样,所有节点都已完全连接。隐藏层的输出将进入网络的下一层,这将是我们的最终层和输出层。我们将使用与上一层相同的ReLU激活,并减少20%。添加此层的代码在此处给出-
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.2))
此阶段的网络可以如下所示:
接下来,我们将最后一层添加到我们的网络中,即输出层。请注意,您可以使用类似于此处使用的代码来添加任意数量的隐藏层。增加更多的层将使网络变得复杂,难以进行培训;但是,尽管不是全部,但在很多情况下都具有更好结果的绝对优势。
输出层仅包含10个节点,因为我们希望将给定图像分类为10个不同的数字。我们使用以下语句添加这一层:
model.add(Dense(10))
由于我们想以10个不同的单位对输出进行分类,因此我们使用softmax激活。对于ReLU,输出为二进制。我们使用以下语句添加激活-
model.add(Activation('softmax'))
此时,我们的网络可以如下图所示可视化-
至此,我们的网络模型已在软件中完全定义。运行代码单元,如果没有错误,您将在屏幕上看到确认消息,如下面的屏幕截图所示-
接下来,我们需要编译模型。