16 Keras简介

在前一章中,我们了解了如何使用 TensorFlow 的计算图进行基本的计算操作,包括使用 fetchfeed 方法来获取和传递数据。这为我们后续的深度学习模型构建打下了基础。本章将重点介绍 Keras,一个用于构建和训练深度学习模型的高层API。

Keras 是一个用户友好的深度学习库,能够简化神经网络的创建和训练过程。它在 TensorFlow 内部实现,具有强大的功能,并且提供了简单而一致的 API,使得构建复杂的模型变得更容易。

Keras的核心概念

在 Keras 中,模型是由一个或多个“层(Layer)”组成的。层是 Keras 的基本组成部分,负责执行大部分的计算或转换。以下是 Keras 中几个重要的概念:

  • 模型(Model):Keras 中的模型可以视为一个神经网络,负责处理输入数据并输出预测值。Keras 提供了 SequentialFunctional 两种模型构建方式。
  • 层(Layer):层是模型的构成部分,每一层可以执行特定的计算,比如全连接层(Dense)、卷积层(Conv2D)等。层的数量和类型直接影响模型的性能。
  • 损失函数(Loss Function):损失函数用于评估模型输出与真实标签之间的差距,从而指导模型的优化。
  • 优化器(Optimizer):优化器用于更新模型的参数以最小化损失函数,常用的优化器包括 SGD、Adam 等。
  • 指标(Metrics):指标用于评估模型的性能,例如准确率等。

Keras的优势

  1. 易于使用:Keras 的 API 简单明了,非常适合新手快速上手。
  2. 灵活性与可扩展性:虽然 Keras 很简单,但它仍然提供了足够的灵活性来构建复杂的深度学习模型。
  3. 支持多种后端:Keras 支持多种后端,包括 TensorFlow、Theano 和 CNTK,使得它具有广泛的适应性。

Keras示例

下面,我们将通过一个简单的例子来说明如何使用 Keras 构建和训练一个模型。我们将创建一个用于简单分类任务的模型。假设我们要训练一个模型来对手写数字(MNIST 数据集)进行分类。

数据预处理

首先,我们需要加载并预处理数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical

# 加载数据集
(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, num_classes=10)
y_test = to_categorical(y_test, num_classes=10)

print(f'x_train shape: {x_train.shape}, x_test shape: {x_test.shape}')

在上面的代码中,我们首先加载了 MNIST 数据集,并将像素值缩放到 $[0,1]$ 之间,然后将标签转换为独热编码格式。

构建模型

接下来,我们使用 Keras 构建一个简单的全连接神经网络模型:

1
2
3
4
5
6
7
8
9
10
11
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Flatten, Dense

# 构建模型
model = Sequential() # 初始化一个顺序模型
model.add(Flatten(input_shape=(28, 28))) # 将28x28的图片展平成784维向量
model.add(Dense(128, activation='relu')) # 添加一层全连接层,128个神经元
model.add(Dense(10, activation='softmax')) # 输出层,10个神经元(对应数字0-9)

# 查看模型摘要
model.summary()

在这个模型中,我们使用 Flatten 层将输入的二维图像转换为一维向量,并添加了两个全连接层。最后一层使用 softmax 激活函数为多类分类提供输出。

编译模型

在训练之前,我们需要编译模型,指定优化器、损失函数和评估指标:

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

训练模型

现在,我们可以开始训练模型:

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

在这里,我们指定了训练的轮次(epochs)和批大小(batch_size)。validation_split 选项用于从训练集中保留一部分数据作为验证集,用于评估模型的性能。

评估模型

最后,我们可以使用测试集评估模型的性能:

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

小结

通过本章的介绍,我们对 Keras 有了一个初步的了解。Keras 提供了高效、简洁的方式来构建深度学习模型,使得用户能够专注于模型的设计和调优,而不是低层次的细节。在接下来的章节中,我们将探讨如何使用 Keras 构建更复杂的模型,进一步提升我们的深度学习能力。在下一章中,我们将深入学习如何构建更为简单、实用的 Keras 模型。

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-11

许可协议

分享转发

复习上节

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论