23 在TensorFlow中使用Keras

在前面的文章中,我们探讨了如何进行Keras的Fine-tuning以优化预训练模型的性能。本篇将重点讲解如何在TensorFlow中使用Keras,从基础的模型构建到训练以及评估,确保大家能够顺利过渡到使用Keras框架中实际应用的场景。

Keras与TensorFlow的接口

Keras是一个高层神经网络API,它可以运行在多种深度学习框架上,其中最流行的实现就是TensorFlow。TensorFlow自2.0版本以来,将Keras集成成为其高级API,简化了模型构建与训练的流程。

在此大背景下,TensorFlow中的Keras可以通过以下几种方式构建模型:

  1. 顺序模型(Sequential):适用于单一输入层和输出层的线性堆叠。
  2. 函数式API(Functional API):允许创建复杂的模型,例如多输入,输出,或共享层。
  3. 子类化(Subclassing):允许用户自定义层和模型,提供了更高的灵活性。

我们将使用顺序模型来演示如何在TensorFlow中构建一个简单的神经网络。

构建一个简单的顺序模型

以下代码展示了如何使用Keras在TensorFlow中定义一个简单的多层感知机(MLP)来进行分类任务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import tensorflow as tf
from tensorflow.keras import layers, models

# 设置随机种子以确保可重复性
tf.random.set_seed(42)

# 创建顺序模型
model = models.Sequential([
layers.Input(shape=(784,)), # 输入层,假设输入特征为784维
layers.Dense(128, activation='relu'), # 隐藏层,128个神经元
layers.Dense(10, activation='softmax') # 输出层,10类分类
])

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

编译模型

编译模型是准备好训练的关键步骤。在这个阶段,我们需要指定优化器、损失函数和评估指标。

1
2
3
model.compile(optimizer='adam',  # 使用Adam优化器
loss='sparse_categorical_crossentropy', # 使用稀疏分类交叉熵作为损失函数
metrics=['accuracy']) # 评估指标为准确率

训练模型

接下来,我们可以使用训练数据来训练该模型。需要注意的是,在训练之前,确保数据已经被归一化处理,并且分成了训练集和验证集。

1
2
3
4
# 假设加载并预处理了数据
# train_images, train_labels, val_images, val_labels 为预处理好的数据
history = model.fit(train_images, train_labels, epochs=10, batch_size=32,
validation_data=(val_images, val_labels))

评估模型

训练完成后,我们需要评估该模型在测试集上的表现。

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

高级用法 - 使用函数式API

尽管顺序模型非常简洁,但在面对更复杂的情况时,比如需要多个输入层的情况,我们可能需要借助“函数式API”。下面是一个使用函数式API构建具有两个输入的模型的示例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 定义输入层
input1 = layers.Input(shape=(784,))
input2 = layers.Input(shape=(784,))

# 第一个共享层
shared_layer = layers.Dense(128, activation='relu')

# 应用共享层
output1 = shared_layer(input1)
output2 = shared_layer(input2)

# 定义输出层
output = layers.Dense(10, activation='softmax')(output1)

# 创建模型
model = models.Model(inputs=[input1, input2], outputs=output)

# 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])

总结

本文通过案例详细讲解了如何在TensorFlow中使用Keras进行基本的模型构建、训练及评估。我们不仅通过简洁的顺序模型展示了基本的用法,还引入了更复杂的函数式API,为那些需要实现复杂结构的用户提供了灵活性。

接下来,在下一篇文章中,我们将深入讨论如何使用TensorBoard对Keras模型进行可视化,这将有助于我们更好地理解模型训练过程及其性能。

通过这样的方式,希望能帮助大家更好地掌握Keras与TensorFlow的结合,进而进行更复杂的深度学习项目。

23 在TensorFlow中使用Keras

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

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论