热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

人工智能实践:Tensorflow笔记#9卷积神经网络基础

全连接 NN:每个神经元与前后相邻层的每一个神经元都有连接关系,输入是特征,输出为预测的结果
参数个数:\sum(前层 × 后层 + 后层)
人工智能实践:Tensorflow笔记 # 9 卷积神经网络基础
一张分辨率仅仅是 28x28 的黑白图像,就有近 40 万个待优化的参数。现实生活中高分辨率的彩色图像,像素点更多,且为红绿蓝三通道信息。
待优化的参数过多,容易导致模型过拟合。为避免这种现象,实际应用中一般不会将原始图片直接喂入全连接网络。
在实际应用中,会先对原始图像进行特征提取,把提取到的特征喂给全连接网络,再让全连接网络计算出分类评估值。
人工智能实践:Tensorflow笔记 # 9 卷积神经网络基础
卷积是一种有效提取图片特征的方法。一般用一个正方形卷积核,遍历图片上的每一个像素点。图片与卷积核重合区域内相对应的每一个像素值乘卷积核内相对应点的权重,然后求和,再加上偏置后,最后得到输出图片中的一个像素值。
人工智能实践:Tensorflow笔记 # 9 卷积神经网络基础
例:上面是 5x5x1 的灰度图片,1 表示单通道,5x5 表示分辨率,共有 5 行 5列个灰度值。若用一个 3x3x1 的卷积核对此 5x5x1 的灰度图片进行卷积,偏置项b=1,则求卷积的计算是:(-1)x1+0x0+1x2+(-1)x5+0x4+1x2+(-1)x3+0x4+1x5+1=1(注意不要忘记加偏置 1)。
输出图片边长=(输入图片边长–卷积核长+1)/步长,此图为:(5 – 3 + 1)/ 1 = 3,输出图片是 3x3 的分辨率,用了 1 个卷积核,输出深度是 1,最后输出的是3x3x1 的图片。
全零填充 Padding
有时会在输入图片周围进行全零填充,这样可以保证输出图片的尺寸和输入图片一致。
人工智能实践:Tensorflow笔记 # 9 卷积神经网络基础
例:在前面 5x5x1 的图片周围进行全零填充,可使输出图片仍保持 5x5x1 的维度。这个全零填充的过程叫做 padding。
=(WF+2P)/S+1输出数据体的尺寸=(W−F+2P)/S+1
W:输入数据体尺寸,F:卷积层中神经元感知域,S:步长,P:零填充的数量。
例:输入是 7×7,滤波器是 3×3,步长为 1,填充为 0,那么就能得到一个 5×5的输出。如果步长为 2,输出就是 3×3。如果输入量是 32x32x3,核是 5x5x3,不用全零填充,输出是(32-5+1)/1=28,
如果要让输出量保持在 32x32x3,可以对该层加一个大小为 2 的零填充。可以根据需求计算出需要填充几层零。32=(32-5+2P)/1 +1,计算出 P=2,即需填充 2层零。
人工智能实践:Tensorflow笔记 # 9 卷积神经网络基础
使用 padding 和不使用 padding 的输出维度
人工智能实践:Tensorflow笔记 # 9 卷积神经网络基础
上一行公式是使用 padding 的输出图片边长,下一行公式是不使用 padding的输出图片边长。公式如果不能整除,需要向上取整数。如果用全零填充,也就是 padding=SAME。如果不用全零填充,也就是 padding=VALID。
Tensorflow 给出的计算卷积的函数
人工智能实践:Tensorflow笔记 # 9 卷积神经网络基础
函数中要给出四个信息:对输入图片的描述、对卷积核的描述、对卷积核滑动步长的描述以及是否使用 padding。
1)对输入图片的描述:用 batch 给出一次喂入多少张图片,每张图片的分辨率大小,比如 5 行 5 列,以及这些图片包含几个通道的信息,如果是灰度图则为单通道,参数写 1,如果是彩色图则为红绿蓝三通道,参数写 3。
2)对卷积核的描述:要给出卷积核的行分辨率和列分辨率、通道数以及用了几个卷积核。比如上图描述,表示卷积核行列分辨率分别为 3 行和 3 列,且是 1 通道的,一共有 16 个这样的卷积核,卷积核的通道数是由输入图片的通道数决定的,卷积核的通道数等于输入图片的通道数,所以卷积核的通道数也是 1。一共有 16 个这样的卷积核,说明卷积操作后输出图片的深度是 16,也就是输出
为 16 通道。
3)对卷积核滑动步长的描述:上图第二个参数表示横向滑动步长,第三个参数表示纵向滑动步长。第一个 1 和最后一个 1 这里固定的。这句表示横向纵向都以 1 为步长。
4)是否使用padding:用的是VALID。注意这里是以字符串的形式给出VALID。
对多通道的图片求卷积
多数情况下,输入的图片是 RGB 三个颜色组成的彩色图,输入的图片包含了红、绿、蓝三层数据,卷积核的深度应该等于输入图片的通道数,所以使用 3x3x3的卷积核,最后一个 3 表示匹配输入图像的 3 个通道,这样这个卷积核有三层,每层会随机生成 9 个待优化的参数,一共有 27 个待优化参数 w 和一个偏置 b。
人工智能实践:Tensorflow笔记 # 9 卷积神经网络基础
对于彩色图,按层分解开,可以直观表示为上面这张图,三个颜色分量:红色分量、绿色分量和蓝色分量。

卷积计算方法和单层卷积核相似,卷积核为了匹配红绿蓝三个颜色,把三层的卷积核套在三层的彩色图片上,重合的 27 个像素进行对应点的乘加运算,最后的结果再加上偏置项 b,求得输出图片中的一个值。这个 5x5x3 的输入图片加了全零填充,使用 3x3x3 的卷积核,所有 27 个点与对应的待优化参数相乘,乘积求和再加上偏置 b 得到输出图片中的一个值 6。

人工智能实践:Tensorflow笔记 # 9 卷积神经网络基础
针对上面这幅彩色图片,用 conv2d 函数实现可以表示为:
一次输入 batch 张图片,输入图片的分辨率是 5x5,是 3 通道的,卷积核是3x3x3,一共有 16 个卷积核,这样输出的深度就是 16,核滑动横向步长是 1,纵向步长也是 1,padding 选择 same,保证输出是 5x5 分辨率。由于一共用了 16个卷积核,所以输出图片是 5x5x16。
池化 Pooling
Tensorflow 给出了计算池化的函数。最大池化用 tf.nn.max_pool 函数,平均池化用 tf.nn.avg_pool 函数。函数中要给出四个信息,对输入的描述、对池化核的描述、对池化核滑动步长的描述和是否使用 padding

人工智能实践:Tensorflow笔记 # 9 卷积神经网络基础
1)对输入的描述:给出一次输入 batch 张图片、行列分辨率、输入通道的个数。
2)对池化核的描述:只描述行分辨率和列分辨率,第一个和最后一个参数固定是 1。
3)对池化核滑动步长的描述:只描述横向滑动步长和纵向滑动步长,第一个和最后一个参数固定是 1。
4)是否使用 padding:padding 可以是使用零填充 SAME 或者不使用零填充VALID。

舍弃 Dropout

人工智能实践:Tensorflow笔记 # 9 卷积神经网络基础

在神经网络训练过程中,为了减少过多参数常使用 dropout 的方法,将一部分神经元按照一定概率从神经网络中舍弃。这种舍弃是临时性的,仅在训练时舍弃一些神经元;在使用神经网络时,会把所有的神经元恢复到神经网络中。比如上面这张图,在训练时一些神经元不参加神经网络计算了。Dropout 可以有效减少过拟合。
Tensorflow 提供的 dropout 的函数:用 tf.nn.dropout 函数。第一个参数链接上一层的输出,第二个参数给出神经元舍弃的概率。
在实际应用中,常常在前向传播构建神经网络时使用 dropout 来减小过拟合加快模型的训练速度。
dropout 一般会放到全连接网络中。如果在训练参数的过程中,输出=tf.nn.dropout(上层输出,暂时舍弃神经元的概率),这样就有指定概率的神经元被随机置零,置零的神经元不参加当前轮的参数优化。

卷积 NN:借助卷积核(kernel)提取特征后,送入全连接网络。
卷积神经网络可以认为由两部分组成,一部分是对输入图片进行特征提取,另一部分就是全连接网络,只不过喂入全连接网络的不再是原始图片,而是经过若干次卷积、**和池化后的特征信息。

卷积神经网络从诞生到现在,已经出现了许多经典网络结构,比如 Lenet-5AlexNetVGGNetGoogLeNetResNet 等。每一种网络结构都是以卷积、**、池化、全连接这四种操作为基础进行扩展。 Lenet-5 是最早出现的卷积神经网络,由 Lecun 团队首先提出,Lenet-5 有效解决了手写数字的识别问题。


Reference

PKU-人工智能实践:TensorFlow笔记


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • ICRA2019最佳论文  Making Sense of Vision and Touch: SelfSupervised Learning of Multimodal Representatio
    文章目录摘要模型架构模态编码器自监督预测控制器设计策略学习控制器设计实验结论和展望会议:ICRA2019标题:《MakingSenseofVision ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 读手语图像识别论文笔记2
    文章目录一、前言二、笔记1.名词解释2.流程分析上一篇快速门:读手语图像识别论文笔记1(手语识别背景和方法)一、前言一句:“做完了&#x ... [详细]
  • cs231n Lecture 3 线性分类笔记(一)
    内容列表线性分类器简介线性评分函数阐明线性分类器损失函数多类SVMSoftmax分类器SVM和Softmax的比较基于Web的可交互线性分类器原型小结注:中文翻译 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • 2017亚马逊人工智能奖公布:他们的AI有什么不同?
    事实上,在我们周围,“人工智能”让一切都变得更“智能”极具讽刺意味。随着人类与机器智能之间的界限变得模糊,我们的世界正在变成一个机器 ... [详细]
  • keras归一化激活函数dropout
    激活函数:1.softmax函数在多分类中常用的激活函数,是基于逻辑回归的,常用在输出一层,将输出压缩在0~1之间,且保证所有元素和为1,表示输入值属于每个输出值的概率大小2、Si ... [详细]
  • 程度|也就是_论文精读:Neural Architecture Search without Training
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文精读:NeuralArchitectureSearchwithoutTraining相关的知识,希望对你有一定的参考价值。 ... [详细]
  • navicat生成er图_实践案例丨ACL2020 KBQA 基于查询图生成回答多跳复杂问题
    摘要:目前复杂问题包括两种:含约束的问题和多跳关系问题。本文对ACL2020KBQA基于查询图生成的方法来回答多跳复杂问题这一论文工作进行了解读 ... [详细]
author-avatar
手机用户2502931235
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有