引言: CNN解释器是 CNN可视化的工具,对于小白而言,CNN可视化对于理解CNN有非常的帮助,因此,花了几天的时间,将CNN解释器网站做了一个翻译,还包括安装CNN解释器的过程和相关资料。

CNN解释器地址:CNN Explainer

CNN解释器文献:CNN Explainer: Learning Convolutional Neural Networks with Interactive Visualization

CNN github地址:https://github.com/poloclub/cnn-explainer

CNN解释器安装:https://zhuanlan.zhihu.com/p/141537738

(在bi站上看到的安装后界面和CNN解释器地址一样,本地安装的时候出现一些问题,因此建议直接在CNN解释器地址学习即可)

cnn解释器官网主要分为两部分,第一,对于CNN做一个简单的介绍,以及一些概念,如张量,神经元,层,卷积核等,第二部分介绍CNN每一层的结构,输入层,卷积层,激励层,池化层和展平层,以及每一层的结构做了可视化的展示,超参数如步长,填充,及核大小等做了简单的介绍,对于理解CNN相关概念非常有帮助。

什么是卷积神经网络?

在机器学习中,分类器将类标签分配给数据点。 例如,图像分类器为图像中存在的对象生成类标签(例如,鸟、飞机)。 卷积神经网络,简称CNN,是一种分类器,擅长解决这个问题!

CNN 是一种神经网络:一种用于识别数据模式的算法。 神经网络通常由按层组织的一组神经元组成,每个神经元都有自己的可学习权重和偏差。 让我们将 CNN 分解为其基本构建块。

  • 张量,可以被认为是一个 n 维矩阵。 在上面的 CNN 中,除输出层外,张量将是 3 维的。
  • 神经元,可以被认为是一个接受多个输入并产生单个输出的函数。 神经元的输出在上面表示为红色→蓝色激活图。
  • 层,是具有相同操作的神经元集合,包括相同的超参数。
  • 内核权重和偏差,对于每个神经元而言,核权重和偏差是独一无二的,但在训练阶段进行了调整,并允许分类器适应所提供的问题和数据集。 它们在可视化教程中中使用黄色→绿色发散色标进行编码。 通过单击神经元或将鼠标悬停在卷积弹性解释视图中的内核/偏差上,可以在交互式公式视图中查看特定值。
  • CNN 传达了一个可微分函数,它在输出层的可视化中表示为类分数

如果您之前研究过神经网络,这些术语对您来说可能听起来很熟悉。 那么是什么让 CNN 与众不同呢? CNN 使用一种特殊类型的层, 即卷积层,这使它们能够很好地从图像和类图像数据中学习。 关于图像数据,CNN 可用于许多不同的计算机视觉任务,例如 image processing, classification, segmentation, and object detection.

在 CNN Explainer 中,您可以看到如何使用简单的 CNN 进行图像分类。 由于网络的简单性,它的性能并不完美,但没关系! CNN Explainer 中使用的网络架构  Tiny VGG包含许多与当今最先进的 CNN 中使用的层和操作相同的层和操作,但规模较小。 这样入门会更容易理解。

网络的每一层都做什么?

让我们来看看网络中的每一层。 在阅读时,通过单击并将鼠标悬停在上面的可视化的各个部分,随意与上面的可视化进行交互。

输入层

输入层(最左边的层)代表进入 CNN 的输入图像。 因为我们使用RGB图像作为输入,所以输入层有3个通道,分别对应红、绿、蓝通道,如图所示。 当您单击上面的网络详细信息图标图标时,使用色阶显示详细信息(在此图层和其他图层上)。

卷积层

卷积层是 CNN 的基础,因为它们包含学习的内核(权重),它提取区分不同图像的特征——这就是我们为什么将其成为分类器的原因!当您与卷积层交互时,您会注意到前一层和卷积层之间的链接。每个链接代表一个唯一的内核,用于卷积运算以产生当前卷积神经元的输出或激活图

卷积神经元使用独特的内核和前一层相应神经元的输出执行逐元素点积(即互相关运算)。这将产生与唯一内核一样多的中间结果。卷积神经元是所有中间结果与学习偏差相加的结果

例如,让我们看一下上面 Tiny VGG 架构中的第一个卷积层。请注意,这一层有 10 个神经元,但前一层只有 3 个神经元。在 Tiny VGG 架构中,卷积层是全连接的,这意味着每个神经元都连接到前一层中的每个其他神经元。关注来自第一个卷积层的最顶层卷积神经元的输出,当我们将鼠标悬停在激活图上时,我们看到有 3 个独特的内核。

图1:当您将鼠标悬停在第一个卷积层最顶层节点的激活图上时,您可以看到应用了 3 个内核来生成此激活图。 单击此激活图后,您可以看到每个唯一内核发生的卷积操作。图片所选择的偏差为:0.0842

   这些内核的大小是网络架构设计者指定的超参数。 为了产生卷积神经元的输出(激活图),我们必须使用前一层的输出和网络学习到的唯一内核执行元素点积。 在 TinyVGG 中,点积操作使用的步长为 1,这意味着内核每个点积移动 1 个像素以上,但这是网络架构设计者可以调整以更好地适应他们的数据集的超参数。 我们必须对所有 3 个内核执行此操作,这将产生 3 个中间结果。

做完卷积处理之后,激励层采用RULU函数,

然后,执行包含所有 3 个中间结果以及网络学习的偏差的元素求和。 在此之后,生成的二维张量将是上面界面上第一个卷积层中最顶层神经元的激活图。 必须应用相同的操作来生成每个神经元的激活图。

通过一些简单的数学运算,我们能够推断出有 3 x 10 = 30 个独特的内核,每个内核的大小为 3x3,应用于第一个卷积层。 卷积层和前一层之间的连通性是构建网络架构时的一个设计决策,它会影响每个卷积层的内核数。 在可视化周围单击以更好地了解卷积层背后的操作。按照上面的例子,自己尝试一下!

了解超参数

  • 填充     当内核扩展到激活图之外时,通常需要填充。填充可以在激活图的边界保存数据,从而提高性能,并且可以帮助保留输入的空间大小,从而允许架构设计人员构建更简单、性能更高的网络。存在许多填充技术,但最常用的方法是零填充,因为它的性能、简单性和计算效率。该技术涉及在输入的边缘周围对称地添加零。这种方法被许多高性能 CNN 所采用,例如 AlexNet。
  • 内核大小,通常也称为过滤器大小,是指输入上滑动窗口的尺寸。选择这个超参数对图像分类任务有巨大的影响。例如,较小的内核尺寸能够从输入中提取包含高度局部特征的大量信息。正如您在上面的可视化中所看到的,较小的内核大小也会导致层维度的减少较小,从而实现更深层次的架构。相反,较大的内核大小提取的信息较少,这会导致层维度的减少更快,通常会导致性能变差。大内核更适合提取更大的特征。归根结底,选择合适的内核大小将取决于您的任务和数据集,但通常,较小的内核大小会为图像分类任务带来更好的性能,因为架构设计师能够将越来越多的层堆叠在一起以学习越来越复杂的功能!
  • 步幅表示内核应该一次移动多少像素。例如,如上面卷积层示例中所述,Tiny VGG 对其卷积层使用步幅为 1,这意味着在输入的 3x3 窗口上执行内积以产生输出值,然后移至每个后续操作都正确一个像素。步幅对 CNN 的影响类似于内核大小。随着步幅的减小,因为提取了更多的数据,所以学习了更多的特征,这也导致了更大的输出层。相反,随着步幅的增加,这会导致更有限的特征提取和更小的输出层尺寸。架构设计师的职责之一是确保内核在实现 CNN 时对称地滑过输入。使用上面的超参数可视化来改变各种输入/内核维度的步幅来理解这个约束!

激活函数

ReLU

神经网络在现代技术中非常普遍——因为它们非常准确! 当今性能最高的 CNN 由数量惊人的层组成,这些层能够学习越来越多的特征。 这些开创性的 CNN 能够实现如此巨大的准确性,部分原因在于它们的非线性。 ReLU 将急需的非线性应用到模型中。 非线性是产生非线性决策边界所必需的,因此输出不能写为输入的线性组合。 如果不存在非线性激活函数,深度 CNN 架构将演变为单个等效的卷积层,其性能几乎不会如此。 ReLU 激活函数专门用作非线性激活函数,与 Sigmoid 等其他非线性函数相反,因为根据经验观察到,使用 ReLU 的 CNN 比对应的 CNN 训练速度更快。

ReLU 激活函数是一对一的数学运算:

此激活函数逐元素应用于输入张量的每个值。 例如,如果对值 2.24 应用 ReLU,结果将是 2.24,因为 2.24 大于 0。您可以通过单击上面网络中的 ReLU 神经元来观察如何应用此激活函数。 整流线性激活函数 (ReLU) 在上述网络架构中的每个卷积层之后执行。 注意这一层对整个网络中各种神经元的激活图的影响!

Softmax

softmax 操作有一个关键目的:确保 CNN 输出总和为 1。因此,softmax 操作可用于将模型输出缩放为概率。单击最后一层会显示网络中的 softmax 操作。请注意展平后的 logits 没有在 0 到 1 之间缩放。为了直观地指示每个 logit(未缩放的标量值)的影响,它们使用浅橙色 → 深橙色色标进行编码。通过 softmax 函数后,现在每个类对应一个合适的概率!

您可能在想标准归一化和 softmax 之间的区别是什么——毕竟,两者都在 0 和 1 之间重新调整对数。请记住,反向传播是训练神经网络的一个关键方面——我们希望正确的答案具有最大的“信号”。 ”通过使用 softmax,我们有效地“逼近”了 argmax,同时获得了可微性。 Rescaling 的 max 权重并没有明显高于其他 logits,而 softmax 确实如此。简单地说,softmax 是一个“更平滑”的 argmax——看看我们在那里做了什么?

图4  Softmax 交互式公式视图允许用户与颜色编码的 logits 和公式进行交互,以了解扁平层后的预测分数如何归一化以产生分类分数。

池化层

不同的 CNN 架构中的池化层类型很多,但它们的目的都是逐渐减小网络的空间范围,从而减少网络的参数和整体计算量。 上述 Tiny VGG 架构中使用的池化类型是 Max-Pooling

Max-Pooling 操作需要在架构设计期间选择内核大小和步长。 选择后,该操作会在输入上滑动具有指定步长的内核,同时仅从输入中选择每个内核切片的最大值以生成输出值。 这个过程可以通过点击上面网络中的一个池化神经元来查看。

在上面的 Tiny VGG 架构中,池化层使用 2x2 内核和 2 步长。具有这些规范的此操作导致丢弃 75% 的激活。 通过丢弃如此多的值,Tiny VGG 的计算效率更高并避免了过度拟合。

展平层

该层将网络中的一个三维层转换为一维向量,以拟合全连接层的输入进行分类。 例如,一个 5x5x2 的张量将被转换为一个大小为 50 的向量。网络的先前卷积层从输入图像中提取特征,但现在是对特征进行分类的时候了。 我们使用 softmax 函数对这些特征进行分类,这需要一维输入。 这就是为什么展平层是必要的。 可以通过单击任何输出类来查看该图层。

文献主演要介绍了四个方面的内容,介绍,CNN组成,CNN应用,和结论,在这里我主要介绍CNN组成部分,并结合CNN解释器来说明,其他部分建议看原文。(大概对原理部分做了翻译,但是感觉讲的不是很好,可以算成是对于CNN解释器的一个补充。)

论文简介:

     Applications of Convolutional Neural Networks 

摘要:近年来,深度学习被用于 广泛应用于很多领域。在深度学习中, 发现卷积神经网络提供了解决现实世界问题的准确结果。在本文中, 我们全面总结了在计算机视觉和自然语言处理方面CNN的应用  。我们描述 CNN 如何用于计算机视觉,主要用于人脸 识别、场景标注、图像分类、动作识别、人体姿态估计和文档分析。 此外,我们描述了 CNN 在语音领域的应用 自然语言的识别和文本分类 加工。我们将 CNN 与其他方法进行比较来解决 同样的问题并解释为什么 CNN 比其他的好方法。

 CNN 架构概览:

   CNN架构不同于传统的多层感知器 (MLP) 以确保一定程度的偏移和失真不变性[16]。 他们结合了三个结构做同样的想法:

  1.      局部感受野
  2.      共享权重
  3.      空间和时间子采样

我们在文章中提到了许多 CNN 架构,但它们的基本组成部分非常相似。 让我们考虑典型的卷积网络架构识别图1中的字符。

卷积网络是可训练的多阶段架构,每个阶段由多个层组成。 每个阶段的输入和输出都是称为特征映射的数组集。 在彩色图像的情况下,每个特征图将是一个 2D 数组,包含输入图像的颜色通道、视频的 3D 数组和音频输入的一维数组。 输出阶段表示从输入的所有位置提取的特征。 每个阶段一般由卷积层、非线性层和池化层组成。 在几个卷积和池化层之后存在一个或多个完全连接的层。

   A  卷积层

这一层是 CNN 的核心构建块。 这层的参数由可学习的内核或过滤器组成它延伸到输入的整个深度。 每个单元该层的一组单元接收输入前一层的小邻域。 这样一个邻域称为神经元的感受野上一层。 在前向传递期间,每个过滤器是与生成地图的输入进行卷积。 什么时候从一个生成的多个这样的特征图多个过滤器堆叠在一起,它们形成了卷积层。 生成权重向量特征图是共享的,这降低了模型的复杂性。

B 非线性层

这是一层应用各种激活函数的神经元。 这些函数引入了多层网络所需要的非线性。 激活函数通常是 sigmoid、tanh 和 ReLU。 与其他函数相比,整流线性单元 (ReLU) [17] 更可取,因为神经网络需要多次训练
快点。

C  池化层

卷积层后面可能是池化层从小矩形块中取出卷积层并对其进行子采样以生成单个块 [19-21] 的最大输出。 池化层逐渐减少表示的空间大小,从而减少要计算的参数。 它也是控制过拟合。 除最大值外的池化单位函数还可以执行其他函数,如平均值 [18]或 L2 范数池化。

D  全连接层

可能有一个或多个全连接层通过获取所有神经元来执行高级推理,上一层并将它们连接到每个神经元在当前层生成全局语义信息。

总结:

CNN解释器本来是作为cnn学习后的实战项目,现在看来适合于做辅助学习的资料,CNN的实战项目可以看动手学深度学习系列,动手学深度学习系列 -CNN,

问题; 在有些层做RELU时,明显数值大于0,结果显示为0,这和RELU函数不一致,这是为什么呢?如下图,0.59大于0,最后输出为0,

原因在于方框中负数和正数的颜色不一样,所以结果不一样。

CNN Explainer相关推荐

  1. npm 全局安装vuecli报错_cnn explainer本地使用--被npm坑惨

    最近在知乎上面看到,看到一个cnn解释器,把每个步揍都很清楚的展示了出来,我想自己搞来玩玩. 第一次使用npm,很多地方不会, 第一步:先在网页上下载下来cnn_explainer,然后解压在没有中文 ...

  2. 最全深度学习训练过程可视化工具(附github源码)

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 Datawhale干货 作者:Edison_G,来源:计算机视觉研究院 编辑丨极市平台 ...

  3. 的训练过程_最全深度学习训练过程可视化工具(附github源码)

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 Datawhale干货 作者:Edison_G,来源:计算机视觉研究院编辑丨极市平台. ...

  4. mysql 设置 0、1 用什么数据类型_什么是MySQL数据库?看这一篇干货文章就够了!...

    前言 为啥学习MySQL呢?因为MySQL是最流行的关系型数据库管理系统之一,在web应用方面,MySQL是最好的软件.MySQL所使用的sql语言是用于访问数据库的最常用标准化语言. 这篇文章,我会 ...

  5. 苹果M1芯片机器学习测评出炉!Mini比RTX 2080Ti快14%,Air好于Pro

    点击上方"CVer",选择加"星标"置顶 重磅干货,第一时间送达 来源:AI科技评论 作者 | 蒋宝尚 编辑 | 青暮 今年双十一,苹果发布了新Mac系列,拿出 ...

  6. 苹果M1芯片机器学习向测评:Mini 比RTX 2080Ti 快14%,Air好于Pro

    本文转载自AI科技评论. 作者 | 蒋宝尚 编辑 | 青暮 今年双十一,苹果发布了新Mac系列,拿出了首款自研ARM架构的芯片.这款5nm制程的SoC(系统级芯片)号称大幅度提升了性能. 例如,新款M ...

  7. 街景字符识别3-字符模型识别

    在前面的章节里,我们将街景字符识别问题定位成定长字符多分类问题,即针对各个字符训练分类器,进而进行字符串的识别. 1 学习目标 学习CNN基础和原理 了解迁移学习之微调(Fine Tuning) 使用 ...

  8. 深度学习原理与框架-CNN在文本分类的应用 1.tf.nn.embedding_lookup(根据索引数据从数据中取出数据) 2.saver.restore(加载sess参数)...

    1. tf.nn.embedding_lookup(W, X) W的维度为[len(vocabulary_list), 128], X的维度为[?, 8],组合后的维度为[?, 8, 128] 代码说 ...

  9. 卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习)

    卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习) 分享一些公式计算张量(图像)的尺寸,以及卷积神经网络(CNN)中层参数的计算. 以AlexNet网络为例,以下是该网络的参数结构图. A ...

  10. 3层-CNN卷积神经网络预测MNIST数字

    3层-CNN卷积神经网络预测MNIST数字 本文创建一个简单的三层卷积网络来预测 MNIST 数字.这个深层网络由两个带有 ReLU 和 maxpool 的卷积层以及两个全连接层组成. MNIST 由 ...

最新文章

  1. [Go]结构体及其方法
  2. Linux下C语言使用、编译与调试
  3. 《网络攻防实践》第二周作业
  4. PowerShell_5_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念
  5. asp oracle9i 链接oracle,解决使用ASP无法连接ORACLE 9i数据库的问题
  6. linux高编线程-------线程的创建,终止
  7. floyd 判圈算法 UVa 11549 计算器谜题
  8. 右手螺旋判断磁感应强度方向_高中物理第11章 电磁感应(汇总58个动画视频)
  9. python在材料模拟中的应用_材料模拟python_模拟-python模拟-在不妨碍实现的情况下修补方法...
  10. 关于启动一个线程监控队列的替代方案
  11. [Remoting FAQ]Loading a Remoting Host On IIS得到BadImageFormatException
  12. linux内核分析作业8:理解进程调度时机跟踪分析进程调度与进程切换的过程
  13. android源码百度网盘下载(AOSP源码集合)
  14. Tomcat做成系统服务
  15. 计算机显示器黑屏首先检查,计算机显示器黑屏的原因是什么?电脑显示器黑屏的解决方案...
  16. 小米6自动重启android,小米6充电重启怎么办?小米6充电自动重启解决方法介绍...
  17. 基于动态空间滤波的受损EEG信号的鲁棒性学习
  18. 在美国读书的体会 [转]
  19. 人工智能技术应用就业前景和就业方向
  20. 教师档案管理系统php,智睿教师档案管理系统 v8.6.0

热门文章

  1. iOS依赖注入框架系列(一):介绍Typhoon
  2. python学习笔记(汇率兑换)
  3. unpack php,php unpack函数怎么用
  4. 【LeetCode】233. 数字 1 的个数
  5. Windows环境下32位汇编语言程序设计(典藏版) 高清完整
  6. 模拟电子技术(学习笔记 1)
  7. 1.Grettings and Introductions
  8. [原创] 原创鼠繪【白发紫衣妖艳男子】
  9. Spring Boot 实现通用 Auth 认证的 4 种方式!
  10. BJTU 1729 Ryan的弹幕游戏(BFS)