- 使用Keras进行深度学习教程
- 使用Keras进行深度学习 - 首页
- 使用Keras进行深度学习 - 简介
- 深度学习
- 项目设置
- 导入库
- 创建深度学习模型
- 编译模型
- 准备数据
- 训练模型
- 评估模型性能
- 对测试数据进行预测
- 保存模型
- 加载模型进行预测
- 结论
- 使用Keras进行深度学习资源
- 使用Keras进行深度学习 - 快速指南
- 使用Keras进行深度学习 - 有用资源
- 使用Keras进行深度学习 - 讨论
创建深度学习模型
我们的神经网络模型将由线性堆叠的层组成。为了定义这样的模型,我们调用Sequential函数 -
model = Sequential()
输入层
我们使用以下程序语句定义输入层,它是我们网络中的第一层 -
model.add(Dense(512, input_shape=(784,)))
这将创建一个具有512个节点(神经元)和784个输入节点的层。如下图所示 -
请注意,所有输入节点都完全连接到第1层,即每个输入节点都连接到第1层的全部512个节点。
接下来,我们需要为第1层的输出添加激活函数。我们将使用ReLU作为我们的激活函数。激活函数使用以下程序语句添加 -
model.add(Activation('relu'))
接下来,我们使用下面的语句添加20%的Dropout。Dropout是一种用于防止模型过拟合的技术。
model.add(Dropout(0.2))
此时,我们的输入层已完全定义。接下来,我们将添加一个隐藏层。
隐藏层
我们的隐藏层将包含512个节点。隐藏层的输入来自我们先前定义的输入层。所有节点都像前面一样完全连接。隐藏层的输出将传递到网络中的下一层,这将是我们的最终输出层。我们将使用与上一层相同的ReLU激活函数和20%的Dropout。添加此层的代码如下 -
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'))
此时,我们的网络可以可视化如下 -
此时,我们的网络模型已在软件中完全定义。运行代码单元,如果没有错误,您将在屏幕上看到确认消息,如下图所示 -
接下来,我们需要编译模型。
广告