0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

卷积神经网络概述及Python实现

CHANBAEK 来源:网络整理 2024-07-04 14:22 次阅读

一、卷积神经网络概述

卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。CNN通过模拟生物的视知觉机制,能够有效地处理具有网格状拓扑结构的数据,如图像、声音等,并在计算机视觉、自然语言处理等领域取得了显著成果。

1. 历史与发展

CNN的研究可追溯至二十世纪80至90年代。日本学者福岛邦彦(Kunihiko Fukushima)在1979年和1980年提出了neocognitron模型,这是最早被提出的深度学习算法之一,其隐含层由S层(Simple-layer)和C层(Complex-layer)交替构成,部分实现了CNN中卷积层和池化层的功能。随后,时间延迟网络(Time Delay Neural Network, TDNN)和平移不变人工神经网络(SIANN)等早期CNN模型相继被提出,但这些模型的应用受限于当时的计算能力和数据量。

1998年,纽约大学的Yann LeCun及其合作者构建了更加完备的卷积神经网络LeNet-5,并在手写数字的识别问题中取得成功。LeNet-5的成功得益于其采用的局部连接和权值共享的方式,这些方式有效减少了权值的数量,降低了模型的复杂度和过拟合的风险。此后,随着深度学习理论的提出和数值计算设备的改进,CNN得到了快速发展,并被广泛应用于各种领域。

2. 基本结构与原理

CNN的基本结构通常包括输入层、卷积层、池化层、全连接层和输出层。

  • 输入层 :接收原始数据,如图像。对于图像而言,输入层的数据通常是三维的,即图像的宽度、高度和颜色通道数(如RGB图像的通道数为3)。
  • 卷积层 :通过卷积运算提取输入数据的特征。卷积层中的每个神经元都与前一层的一个局部区域相连,这个局部区域被称为感受野。卷积层通过多个卷积核(或称为滤波器)对输入数据进行卷积运算,生成多个特征图(feature map)。每个卷积核都代表一种特征提取方式,通过不同的卷积核可以提取到输入数据的不同特征。
  • 池化层 :对卷积层输出的特征图进行下采样操作,以减少数据的空间维度和计算量,同时保留重要特征。常用的池化操作有最大池化(Max Pooling)和平均池化(Average Pooling)等。
  • 全连接层 :将池化层输出的特征图展平为一维向量,并通过全连接的方式与下一层的神经元相连。全连接层通常位于CNN的末尾,用于对提取到的特征进行分类或回归等操作。
  • 输出层 :输出最终的结果。对于分类任务而言,输出层通常使用softmax函数将输出转换为概率分布形式,以表示每个类别的预测概率。

CNN的核心在于其局部连接和权值共享的特性。局部连接意味着每个神经元只与前一层的局部区域相连,这符合生物视觉系统的特性;权值共享则意味着同一个卷积核在处理不同位置的数据时使用的是相同的权重,这有效减少了模型的参数数量,降低了模型的复杂度。

3. 关键技术

CNN中的关键技术包括卷积运算、池化操作、激活函数和反向传播算法等。

  • 卷积运算 :是CNN中最基本的操作之一,通过卷积核与输入数据的局部区域进行卷积运算来提取特征。卷积运算具有平移不变性,即无论输入数据中的特征出现在什么位置,卷积运算都能有效地提取到这些特征。
  • 池化操作 :用于对卷积层输出的特征图进行下采样操作,以减少数据的空间维度和计算量。池化操作通常具有局部平移不变性,即无论特征在特征图中的具体位置如何变化,池化操作都能保留这些特征的重要信息
  • 激活函数 :用于增加CNN的非线性能力。常用的激活函数有ReLU(Rectified Linear Unit)、sigmoid和tanh等。激活函数的作用是将卷积层或全连接层的输出映射到一个非线性空间上,使得CNN能够学习更加复杂的特征表示。
  • 反向传播算法 :是训练CNN的关键算法之一。通过反向传播算法可以计算网络中每个参数的梯度,并根据梯度更新网络的参数以最小化损失函数。反向传播算法的实现依赖于链式法则和梯度下降等优化算法。
4. 应用领域

CNN在计算机视觉、自然语言处理、语音识别等领域都有广泛的应用。在计算机视觉领域,CNN被用于图像分类、目标检测、图像分割、人脸识别等任务;在自然语言处理领域,CNN被用于文本分类、情感分析、机器翻译等任务;在语音识别领域,CNN被用于语音特征提取和语音识别等任务。

二、Python实现卷积神经网络

在Python中,实现卷积神经网络最常用的是TensorFlow和PyTorch这两个深度学习框架。下面我将以TensorFlow为例,介绍如何使用TensorFlow的高级API Keras来构建一个简单的卷积神经网络模型,用于图像分类任务。

1. 环境准备

首先,确保你已经安装了TensorFlow。如果未安装,可以通过pip命令进行安装:

pip install tensorflow
2. 导入必要的库
import tensorflow as tf  
from tensorflow.keras import layers, models  
from tensorflow.keras.datasets import cifar10  
from tensorflow.keras.utils import to_categorical

这里我们使用了CIFAR-10数据集,它是一个包含60000张32x32彩色图片的数据集,共有10个类别,每个类别包含6000张图片。

3. 加载和预处理数据
# 加载CIFAR-10数据集  
(train_images, train_labels), (test_images, test_labels) = cifar10.load_data()  
  
# 归一化数据(将像素值从[0, 255]缩放到[0, 1])  
train_images, test_images = train_images / 255.0, test_images / 255.0  
  
# 将标签转换为独热编码形式  
train_labels = to_categorical(train_labels, 10)  
test_labels = to_categorical(test_labels, 10)
4. 构建卷积神经网络模型
# 构建模型  
model = models.Sequential()  
# 添加卷积层和ReLU激活函数  
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))  
# 添加池化层  
model.add(layers.MaxPooling2D((2, 2)))  
# 可以添加更多的卷积层和池化层来加深网络  
model.add(layers.Conv2D(64, (3, 3), activation='relu'))  
model.add(layers.MaxPooling2D((2, 2)))  
model.add(layers.Conv2D(64, (3, 3), activation='relu'))  
# 将特征图展平为一维向量  
model.add(layers.Flatten())  
# 添加全连接层和ReLU激活函数  
model.add(layers.Dense(64, activation='relu'))  
# 添加输出层,使用softmax激活函数进行多分类  
model.add(layers.Dense(10, activation='softmax'))  
  
# 编译模型  
model.compile(optimizer='adam',  
              loss='categorical_crossentropy',  
              metrics=['accuracy'])
5. 训练模型
# 训练模型  
model.fit(train_images, train_labels, epochs=10,   
          validation_data=(test_images, test_labels))

这里,epochs表示整个数据集将被遍历和学习的次数。validation_data用于在每个epoch结束时评估模型在未见过的测试数据上的性能。

6. 评估模型
# 评估模型在测试集上的性能  
test_loss, test_acc = model.evaluate(test_images,  test_labels, verbose=2)  
print('nTest accuracy:', test_acc)
7. 使用模型进行预测
# 使用模型进行预测  
predictions = model.predict(test_images)  
  
# 预测结果的前5个示例  
for i in range(5):  
    print(f'Predicted: {np.argmax(predictions[i])}, Actual: {np.argmax(test_labels[i])}')

这段代码将输出测试集中前5个图像的预测类别和实际类别。

8. 模型保存与加载
# 保存模型  
model.save('cifar10_cnn_model.h5')  
  
# 加载模型  
loaded_model = models.load_model('cifar10_cnn_model.h5')

通过以上步骤,我们可以使用TensorFlow的Keras API构建、训练、评估和保存一个简单的卷积神经网络模型。当然,这只是一个基础示例,实际应用中可能需要更复杂的网络结构、更多的数据预处理步骤以及更精细的超参数调整。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    53

    文章

    4754

    浏览量

    84142
  • 深度学习
    +关注

    关注

    73

    文章

    5426

    浏览量

    120668
  • 卷积神经网络

    关注

    4

    文章

    358

    浏览量

    11802
收藏 人收藏

    评论

    相关推荐

    使用Python卷积神经网络(CNN)进行图像识别的基本步骤

    Python 卷积神经网络(CNN)在图像识别领域具有广泛的应用。通过使用卷积神经网络,我们可以让计算机从图像中学习特征,从而
    的头像 发表于 11-20 11:20 4413次阅读

    全连接神经网络卷积神经网络有什么区别

    全连接神经网络卷积神经网络的区别
    发表于 06-06 14:21

    卷积神经网络如何使用

    卷积神经网络(CNN)究竟是什么,鉴于神经网络在工程上经历了曲折的历史,您为什么还会在意它呢? 对于这些非常中肯的问题,我们似乎可以给出相对简明的答案。
    发表于 07-17 07:21

    什么是图卷积神经网络

    卷积神经网络
    发表于 08-20 12:05

    卷积神经网络的优点是什么

    卷积神经网络的优点
    发表于 05-05 18:12

    卷积神经网络一维卷积的处理过程

    。本文就以一维卷积神经网络为例谈谈怎么来进一步优化卷积神经网络使用的memory。文章(卷积神经网络
    发表于 12-23 06:16

    卷积神经网络模型发展及应用

    卷积神经网络模型发展及应用转载****地址:http://fcst.ceaj.org/CN/abstract/abstract2521.shtml深度学习是机器学习和人工智能研究的最新趋势,作为一个
    发表于 08-02 10:39

    卷积神经网络python代码

    卷积操作,将不同层次的特征进行提取,从而通过反向传播算法不断优化网络权重,最终实现分类和预测等任务。 在本文中,我们将介绍如何使用Python实现
    的头像 发表于 08-21 16:41 921次阅读

    卷积神经网络概述 卷积神经网络的特点 cnn卷积神经网络的优点

    卷积神经网络概述 卷积神经网络的特点 cnn卷积神经网络
    的头像 发表于 08-21 16:41 2632次阅读

    卷积神经网络的工作原理 卷积神经网络通俗解释

    。CNN可以帮助人们实现许多有趣的任务,如图像分类、物体检测、语音识别、自然语言处理和视频分析等。本文将详细介绍卷积神经网络的工作原理并用通俗易懂的语言解释。 1.概述
    的头像 发表于 08-21 16:49 3578次阅读

    卷积神经网络层级结构 卷积神经网络卷积层讲解

    像分类、目标检测、人脸识别等。卷积神经网络的核心是卷积层和池化层,它们构成了网络的主干,实现了对图像特征的提取和抽象。 一、
    的头像 发表于 08-21 16:49 6959次阅读

    卷积神经网络的介绍 什么是卷积神经网络算法

    卷积神经网络的介绍 什么是卷积神经网络算法 卷积神经网络涉及的关键技术
    的头像 发表于 08-21 16:49 1726次阅读

    卷积神经网络算法代码python

    卷积神经网络算法代码python  卷积神经网络(Convolutional Neural Network,CNN)是深度学习中最为重要的算
    的头像 发表于 08-21 16:50 1977次阅读

    卷积神经网络的原理与实现

    1.卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度学习模型,广泛应用于图像识别、视频分析、自然语言处理等领域。 卷积神经网络是一种前馈
    的头像 发表于 07-02 16:47 341次阅读

    卷积神经网络实现原理

    卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度学习模型,广泛应用于图像识别、视频分析、自然语言处理等领域。本文将详细介绍卷积神经网络
    的头像 发表于 07-03 10:49 405次阅读