22 深度学习常见模型
系列进度
TensorFlow 入门 · 第 22 / 25 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
TensorFlow 学习要把张量、模型、训练和部署放在一条线上,而不是只看单段代码。阅读时可以按「卷积神经网络 -> CNN的结构 -> 使用CNN进行图像分类的案例 -> 循环神经网络」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「卷积神经网络」,再查「CNN的结构」。
在上一章中,我们讨论了模型的评估与调优技巧,这是深度学习实践过程中非常重要的一部分。而在本章中,我们将深入了解一些常见的深度学习模型。这些模型是大多数深度学习任务的基础,了解它们的工作原理及其应用将帮助我们在后续的学习和实际开发中取得更好的成绩。
卷积神经网络(CNN)
卷积神经网络(Convolutional Neural Network,简称CNN)是处理图像数据的常用模型。它们通过使用卷积层、池化层和全连接层来提取空间特征。
学习 TensorFlow 常见模型时,先看图像、序列、表格数据、网络结构、训练目标和评估方式。
1.1 CNN的结构
CNN的基本结构通常包括以下几个层:
-
卷积层:该层使用滤波器(卷积核)对输入图像进行卷积操作,以提取不同的特征。
-
激活层:一般使用ReLU(Rectified Linear Unit)激活函数来引入非线性。
-
池化层:通过下采样(如最大池化或平均池化)来减少特征图的维度,降低计算量和过拟合风险。
-
全连接层:在最后阶段,将提取的特征用于分类,通常使用softmax激活。
1.2 使用CNN进行图像分类的案例
下面是一个使用TensorFlow构建简单CNN模型进行图像分类的基本示例。
import tensorflow as tf
from tensorflow.keras import layers, models
# 加载数据(以CIFAR-10为例)
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.cifar10.load_data()
# 预处理数据
train_images = train_images.astype('float32') / 255.0
test_images = test_images.astype('float32') / 255.0
# 定义CNN模型
model = models.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dense(10, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
在这个示例中,我们定义了一个简单的CNN模型,用于对CIFAR-10数据集的图像进行分类。模型包含三个卷积层和两个最大池化层,最后通过全连接层进行分类。
循环神经网络(RNN)
循环神经网络(Recurrent Neural Network,简称RNN)是处理序列数据的模型,常用于自然语言处理和时间序列预测等任务。
《深度学习常见模型》适合边看图边读正文。先确认问题和判断标准,再看概念解释与练习步骤,信息会更容易连成一条线。
2.1 RNN的结构
RNN的特殊之处在于其能够通过循环连接对序列数据进行建模。RNN的单元会将前一时间步的隐藏状态传递到当前时间步,从而保持对序列上下文的记忆。
2.2 使用RNN进行文本生成的案例
以下是一个用RNN进行简单文本生成的TensorFlow示例:
import numpy as np
import tensorflow as tf
from tensorflow.keras import layers, models
# 构建数据集
text = "hello world"
chars = sorted(list(set(text)))
char_to_index = {c: i for i, c in enumerate(chars)}
index_to_char = {i: c for i, c in enumerate(chars)}
# 准备输入数据
sequences = []
next_chars = []
for i in range(len(text) - 1):
sequences.append(text[i])
next_chars.append(text[i + 1])
X = np.array([[char_to_index[ch] for ch in sequences]])
y = np.array([[char_to_index[ch] for ch in next_chars]])
# 定义RNN模型
model = models.Sequential([
layers.Embedding(len(chars), 10, input_length=1),
layers.SimpleRNN(32, activation='relu'),
layers.Dense(len(chars), activation='softmax')
])
# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# 训练模型
model.fit(X, y, epochs=100)
# 文本生成示例
pred_index = model.predict(np.array([[char_to_index['h']]]))
pred_char = index_to_char[np.argmax(pred_index)]
print("预测的下一个字符:", pred_char)
在上述示例中,我们使用了一个简单的RNN模型来预测文本中的下一个字符。通过训练模型,我们可以生成字符序列。
学完《深度学习常见模型》后,不妨换一个自己的场景试一次,重点观察输入、处理和输出是否能对应起来。
如果想把《深度学习常见模型》用到自己的任务里,可以先缩小场景,只验证一个最关键的判断点。
结语
在本章中,我们探讨了深度学习中的两种常见模型:卷积神经网络(CNN)和循环神经网络(RNN)。这两种模型在图像处理和序列数据建模方面都有着广泛的应用。掌握这些基础模型,将为我们在深度学习的后续学习和应用打下坚实的基础。
在下一章,我们将讨论迁移学习的应用,这是一种在已有模型基础上进行快速学习和调整的技术,非常适合应用于深度学习的实际任务中。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
深度学习常见模型适合谁读?
这是 TensorFlow 入门 系列第 22 / 25 篇,适合正在学习TensorFlow 入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇TensorFlow 入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读