10 构建模型之顺序模型Sequential

在上一篇中,我们讨论了Keras的基本概念,以及如何选择合适的模型类型。今天,我们将深入探讨Keras中最简单和最常用的模型类型——顺序模型(Sequential)。顺序模型是一种线性堆叠多层的模型,非常适合于层与层之间逐步连接的常见任务,如分类和回归。

什么是顺序模型?

顺序模型是Keras中用于构建神经网络的一种方便的方式。它允许用户通过简单地将每一层添加到模型中,从而按顺序构建网络。每一层的输入都是前一层的输出,适合用于构建大多数简单的深度学习模型。

如何构建顺序模型?

在Keras中构建顺序模型非常简单。通常,你只需要以下几个步骤:

  1. 导入必要的库
  2. 创建一个顺序模型
  3. 添加层到模型中。
  4. 编译模型
  5. 训练模型

为了更好地理解这个过程,我们来看看一个实际的例子:构建一个用于手写数字识别的简单神经网络。

案例:手写数字识别

我们将使用经典的MNIST数据集,该数据集包含了大量的手写数字(0-9)。我们的目标是构建一个顺序模型来识别这些手写数字。

1. 导入必要的库

首先,我们需要导入Keras以及其他一些必需的库。

1
2
3
4
5
6
import numpy as np
import matplotlib.pyplot as plt
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Flatten
from keras.utils import to_categorical

2. 加载和预处理数据

接下来,我们加载MNIST数据集并进行预处理。我们将数据标准化到[0, 1]的范围,并将标签进行独热编码。

1
2
3
4
5
6
7
8
9
10
# 加载数据
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# 数据标准化
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0

# 独热编码标签
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

3. 创建顺序模型

现在,我们可以使用Sequential类来创建一个顺序模型。我们将使用一个Flatten层来展平输入,然后使用一个隐藏层和一个输出层。

1
2
3
4
model = Sequential()
model.add(Flatten(input_shape=(28, 28))) # 将28x28图像展平
model.add(Dense(128, activation='relu')) # 隐藏层
model.add(Dense(10, activation='softmax')) # 输出层

4. 编译模型

模型构建完成后,需要编译模型。我们选择使用categorical_crossentropy作为损失函数,adam作为优化器,并计算准确率(accuracy)作为评估指标。

1
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

5. 训练模型

接下来,我们使用训练数据来训练模型。这里我们将训练10个周期(epochs)。

1
model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2)

6. 评估模型

训练完成后,我们可以在测试集上评估模型的性能。

1
2
test_loss, test_accuracy = model.evaluate(x_test, y_test)
print(f'Test accuracy: {test_accuracy:.4f}')

7. 可视化结果

最后,我们可以可视化一些识别结果,以便更好地理解模型的表现。

1
2
3
4
5
6
7
8
predictions = model.predict(x_test)

# 显示前5个测试图像的预测结果
for i in range(5):
plt.imshow(x_test[i], cmap='gray')
plt.title(f'Predicted: {np.argmax(predictions[i])}, Actual: {np.argmax(y_test[i])}')
plt.axis('off')
plt.show()

小结

在这一节中,我们详细介绍了如何使用Keras的顺序模型(Sequential)构建一个简单的手写数字识别模型。从数据的加载、预处理,到模型的创建、编译和训练,我们逐步完成了整个过程。顺序模型对于初学者来说是一个非常友好的工具,它可以快速构建和训练简单的神经网络。

在下一篇文章中,我们将探讨Keras的功能API,它提供了更灵活的方式来构建复杂的模型。敬请期待!

10 构建模型之顺序模型Sequential

https://zglg.work/keras-zero/10/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论