深度学习之 TensorFlow(四):卷积神经网络

简介: 基础概念:  卷积神经网络(CNN):属于人工神经网络的一种,它的权值共享的网络结构显著降低了模型的复杂度,减少了权值的数量。卷积神经网络不像传统的识别算法一样,需要对数据进行特征提取和数据重建,可以直接将图片作为网络的输入,自动提取特征,并且对图形的变形等具有高度不变形。

基础概念:

  卷积神经网络(CNN):属于人工神经网络的一种,它的权值共享的网络结构显著降低了模型的复杂度,减少了权值的数量。卷积神经网络不像传统的识别算法一样,需要对数据进行特征提取和数据重建,可以直接将图片作为网络的输入,自动提取特征,并且对图形的变形等具有高度不变形。在语音分析和图像识别领域有重要用途。

  卷积:卷积是泛函分析中的一种积分变换的数学方法,通过两个函数 f 和 g 生成第三个函数的一种数学算子,表征函数 f 与 g 经过翻转和平移的重叠部分的面积。设函数 f,g 是定义在 \mathbb {R} ^{n} 上的可测函数,fg的卷积记作f*g,它是其中一个函数翻转并平移后与另一个函数的乘积的积分,是一个对平移量的函数,也就是:

 

具体解释下:

  1.已知两函数f(t)和g(t)。下图第一行两图分别为f(t)和g(t)。

  2.首先将两个函数都用来表示,从而得到f()和g()。将函数g()向右移动t个单位,得到函数g(-t)的图像。将g(-t)翻转至纵轴另一侧,得到g(-(-t))即g(t-)的图像。下图第二行两图分别为f()和g(t-)。

  3.由于非常数(实际上是时间变量),当时间变量(以下简称“时移”)取不同值时,g(t-\tau )能沿着轴“滑动”。下图第三四五行可理解为“滑动”。

  4.让从-∞滑动到+∞。两函数交会时,计算交会范围中两函数乘积的积分值。换句话说,我们是在计算一个滑动的的加权总和(weighted-sum)。也就是使用g(t-\tau )当做加权函数,来对 f()取加权值。

  最后得到的波形(未包含在此图中)就是fg的卷积。

 

  神经网络的基本组成包括输入层、隐藏层、输出层。卷积神经网络的特点在于隐藏层分为卷积层和池化层。卷积层通过一块块的卷积核在原始图像上平移来提取特征,每一个特征就是一个特征映射;而池化层通过汇聚特征后稀疏参数来减少要学习的参数,降低网络的复杂度,池化层最常见的包括最大值池化 (max pooling) 和平均值池化 (average pooling) 。

  卷积核在提取特征映射时的动作称为 padding,其有两种方式,即 SAME 和 VALID。由于移动步长(Stride)不一定能整除整张图的像素宽度,我们把不越过边缘取样称为 Vaild Padding,取样的面积小于输入图像的像素宽度;越过边缘取样称为 Same Padding, 取样的面积和输入图像的像素宽度一致。

 

几种不同的卷积神经网络:

1.LeNet

  • 输入层:32 x 32
  • 卷积层:3个
  • 下采样层:2个 
  • 全连接层:1个
  • 输出层:10个类别(数字0~9的概率)。

(1)输入层。输入图像尺寸为32 x 32。

(2)卷积层:卷积运算的主要目的是使原信号特征增强,并且降低噪音。

(3)下采样层:下采样层主要是想降低网络训练参数及模型的过拟合程度。通常有以下两种方式。

  • 最大池化(max pooling):在选中的区域中找最大的值作为采样后的值。
  • 平均值池化(mean pooling):把选中区域中的平均值作为采样后的值。

(4)全连接层:计算输入向量和权重向量的点积,再加上一个偏置,随后将其传递给 sigmoid 函数,产生单元 i 的一个状态。

 

2.AlexNet

  AlextNet 由5个卷积层、5个池化层、3个全连接层、大约5000万个可调参数组成。

优点:使用了如下方法

  •  防止过拟合:Dropout、数据增强。
  • 非线性激活函数:ReLU。
  • 大数据训练:120万 ImageNet 图像数据。
  • GPU 实现、LRN规范化层的使用。

 

此外还有 VGGNet、GoogLeNet、ResNet 等卷积神经网络模型,这里不再一一叙述。

 

 

***讲下解决过拟合的方法。

1)数据增强:增加训练数据是避免过拟合的好方法,并且能提升算法的准确性。当训练数据有限的时候,可以通过一些变换从已有的训练数据集中生成一些新数据。来扩大训练数据量。通常采用的变形方法以下几种:

  • 水平翻转图像(又称反射变化,filp)。
  • 从原始图像随机地平移变换出一些图像。
  • 给图像增加一些随机的光照(又称光照、彩色变换、颜色抖动)。

(2)Dropout。以 Alexnet 为例,Alexnet 是以0.5 的概率将每个隐层神经元的输出设置为0 。以这种方式被抑制的神经元既不参加前向传播,也不参与反向传播。因此,每次输入一个样本,就相当于该神经网络尝试了一个新结构,但是所有这些结果之间共享权重。因为神经元不能依赖于其他神经元而存在,所以这种技术降低了神经元复杂的互适应关系。因此,网络需要被迫学习更为健壮的特征,这些特征在结合其他神经元的一些不同随机子集时很有用。Dropout 使收敛所需的迭代次数大致增加了一倍。

相关文章
|
19天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
209 55
|
28天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
155 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
15天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
56 31
|
22天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
25天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
28天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤
本文介绍了 TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤,包括数据准备、模型定义、损失函数与优化器选择、模型训练与评估、模型保存与部署,并展示了构建全连接神经网络的具体示例。此外,还探讨了 TensorFlow 的高级特性,如自动微分、模型可视化和分布式训练,以及其在未来的发展前景。
110 5
|
2月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
94 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
2月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
105 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
102 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型

热门文章

最新文章