23 在TensorFlow中使用Keras
系列进度
Keras 入门 · 第 23 / 28 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
在 TensorFlow 中使用 Keras,重点是把高级建模接口和底层数据、设备、保存部署能力接起来。
我会确认代码使用的是同一套 tf.keras 入口。混用旧式导入时,版本兼容问题会更难查。
在前面的文章中,我们探讨了如何进行Keras的Fine-tuning以优化预训练模型的性能。本篇将重点讲解如何在TensorFlow中使用Keras,从基础的模型构建到训练以及评估,确保大家能够顺利过渡到使用Keras框架中实际应用的场景。
Keras与TensorFlow的接口
Keras是一个高层神经网络API,它可以运行在多种深度学习框架上,其中最流行的实现就是TensorFlow。TensorFlow自2.0版本以来,将Keras集成成为其高级API,简化了模型构建与训练的流程。
读这篇时,可以把「Keras与Tens -> 构建一个简单的顺序模 -> 编译模型 -> 训练模型」当成一条检查线:先看对象、路径和证据,再回到案例、代码或指标里复查。
在此大背景下,TensorFlow中的Keras可以通过以下几种方式构建模型:
- 顺序模型(Sequential):适用于单一输入层和输出层的线性堆叠。
- 函数式API(Functional API):允许创建复杂的模型,例如多输入,输出,或共享层。
- 子类化(Subclassing):允许用户自定义层和模型,提供了更高的灵活性。
我们将使用顺序模型来演示如何在TensorFlow中构建一个简单的神经网络。
构建一个简单的顺序模型
以下代码展示了如何使用Keras在TensorFlow中定义一个简单的多层感知机(MLP)来进行分类任务。
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()
编译模型
编译模型是准备好训练的关键步骤。在这个阶段,我们需要指定优化器、损失函数和评估指标。
model.compile(optimizer='adam', # 使用Adam优化器
loss='sparse_categorical_crossentropy', # 使用稀疏分类交叉熵作为损失函数
metrics=['accuracy']) # 评估指标为准确率
训练模型
接下来,我们可以使用训练数据来训练该模型。需要注意的是,在训练之前,确保数据已经被归一化处理,并且分成了训练集和验证集。
# 假设加载并预处理了数据
# 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))
评估模型
训练完成后,我们需要评估该模型在测试集上的表现。
test_loss, test_accuracy = model.evaluate(test_images, test_labels)
print(f'Test accuracy: {test_accuracy:.4f}')
高级用法 - 使用函数式API
尽管顺序模型非常简洁,但在面对更复杂的情况时,比如需要多个输入层的情况,我们可能需要借助“函数式API”。下面是一个使用函数式API构建具有两个输入的模型的示例。
看完《在TensorFlow中使用Keras》后,建议用一分钟复盘:关键概念是否分清、练习步骤是否可复现、结论能不能换成自己的话。
# 定义输入层
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》还没完全消化,可以从这张卡片的四个动作重新走一遍。
回看《在TensorFlow中使用Keras》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。
总结
本文通过案例详细讲解了如何在TensorFlow中使用Keras进行基本的模型构建、训练及评估。我们不仅通过简洁的顺序模型展示了基本的用法,还引入了更复杂的函数式API,为那些需要实现复杂结构的用户提供了灵活性。
接下来,在下一篇文章中,我们将深入讨论如何使用TensorBoard对Keras模型进行可视化,这将有助于我们更好地理解模型训练过程及其性能。
通过这样的方式,希望能帮助大家更好地掌握Keras与TensorFlow的结合,进而进行更复杂的深度学习项目。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
在TensorFlow中使用Keras适合谁读?
这是 Keras 入门 系列第 23 / 28 篇,适合正在学习Keras 入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇Keras 入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读