卷积神经网络(CNN)是一种深度学习模型,主要用于处理具有网格结构(如图像)的数据。CNN 在计算机视觉领域表现尤为突出,广泛应用于图像分类、目标检测、图像生成等任务。
CNN 通过引入卷积层、池化层等特殊层,能够有效提取数据的局部特征,同时减少参数量,提升训练效率和模型的泛化能力。
一、CNN 的基本组成结构
一个典型的卷积神经网络通常由以下几个部分组成。
卷积层
卷积层是 CNN 的核心组件。它通过卷积操作来提取输入数据的局部特征。
卷积操作是将一个小的滤波器(filter)或者称为卷积核(kernel)在输入数据上滑动,进行逐元素的点积运算,从而生成一个特征图(feature map)。
-
局部连接:卷积核只作用于输入图像的局部区域,因此每个输出特征仅与输入图像的一部分有关。
-
权重共享:卷积核在输入图像的不同区域重复使用,从而减少了模型的参数数量。
池化层
池化层的作用是减少特征图的尺寸,降低计算复杂度,同时保留重要特征。常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)。
-
最大池化:选取池化窗口内的最大值作为输出,保留了最显著的特征。
-
平均池化:计算池化窗口内的平均值,平滑特征图。
全连接层
卷积层和池化层的输出(特征图)一般会展开成一个一维向量,并输入到全连接层。
全连接层类似于传统的前馈神经网络,每个节点与上一层的所有节点相连。
全连接层用于综合卷积层和池化层提取的特征并输出最终的分类结果。
二、卷积神经网络的工作流程
- 输入层:输入图像数据。
- 卷积层:提取图像的局部特征,通过多个卷积层逐步提取更高层次的特征。
- 池化层:对特征图进行下采样,减少数据维度。
- 激活函数:引入非线性特性,使模型能够学习复杂的特征。
- 全连接层:将提取的特征整合并映射到分类空间。
- 输出层:通常使用 Softmax 函数进行多分类任务,输出每个类别的概率分布。
三、案例分享
以下是一个使用卷积神经网络(CNN)进行手写数字识别的示例代码,利用的是经典的 MNIST 数据集。
首先导入必要的 python 库。
import tensorflow as tf
from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt
然后加载和预处理数据。
# 加载 MNIST 数据集
(train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()
train_images = train_images.reshape((train_images.shape[0], 28, 28, 1)).astype('float32') / 255
test_images = test_images.reshape((test_images.shape[0], 28, 28, 1)).astype('float32') / 255
plt.figure(figsize=(8, 4))
for i in range(10):
plt.subplot(2, 5, i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i].reshape(28, 28), cmap=plt.cm.binary)
plt.xlabel(train_labels[i])
plt.show()
接下来,构建 CNN 模型
# 构建卷积神经网络模型
model = models.Sequential()
# 第一层卷积,32 个过滤器,大小为 3x3,激活函数为 ReLU,输入形状为 28x28x1
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2))) # 最大池化层
# 第二层卷积,64 个过滤器,大小为 3x3
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
# 第三层卷积,64 个过滤器,大小为 3x3
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
# 全连接层
model.add(layers.Flatten()) # 将卷积层的输出展开为一维向量
model.add(layers.Dense(64, activation='relu')) # 全连接层
model.add(layers.Dense(10, activation='softmax')) # 输出层,10 个分类,使用 softmax 激活
model.summary()
然后,编译和训练模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
history = model.fit(train_images, train_labels, epochs=5,
validation_data=(test_images, test_labels))
# 绘制训练和验证损失曲线
plt.plot(history.history['loss'], label='Training Loss')
plt.plot(history.history['val_loss'], label='Validation Loss')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.legend(loc='upper right')
plt.show()
最后,对测试集进行预测
predictions = model.predict(test\_images)
plt.figure(figsize=(8, 4))
for i in range(10):
plt.subplot(2, 5, i+1)
plt.xticks(\[\])
plt.yticks(\[\])
plt.grid(False)
plt.imshow(test\_images\[i\].reshape(28, 28), cmap=plt.cm.binary)
plt.xlabel(f"True: {test\_labels\[i\]}, Pred: {predictions\[i\].argmax()}")
plt.show()
最后分享
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
5. 大模型面试题
面试,不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费
】
如有侵权,请联系删除。