浏览器上实现CNN可视化——清楚看到每一层卷积后的图

2023-11-15

本文作用

学习卷积神经网络时,我们只知道输入一张图片后,通过一顿操作,便可以提取图片中的特征,我们对于其内部的操作,只有理论了解,并没有做到眼见为实。这个CNN解释器让我们在浏览器上,便可以清楚看到每个神经元是如何产生,以及生成的图片长什么样

CNN神经网络可视化工具1

网址:https://poloclub.github.io/cnn-explainer/
在这里插入图片描述
什么是卷积神经网络?
在机器学习中,分类器将类别标签分配给数据点。例如,图像分类器产生图像中存在哪些对象的类别标签(例如,鸟,飞机)。一个卷积神经网络,或CNN的简称,是一种类型的分类,在解决这个问题,其过人之处!

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

甲张量可以被认为是一个n维矩阵。在上面的CNN中,张量将是3维的,输出层除外。
甲神经元可以被看作是发生在多个输入并且产生一个输出的功能。神经元的输出在上面表示为红色 → 蓝色 激活图。
阿层是简单地用相同的操作的神经元,包括相同超参数的集合。
内核权重和偏差(虽然每个神经元都唯一)在训练阶段进行了调整,并允许分类器适应所提供的问题和数据集。它们在可视化中以黄色 → 绿色发散色标进行编码。通过单击神经元或将鼠标悬停在卷积弹性解释视图中的内核/偏差上,可以在“ 交互式公式”视图中查看特定值。
CNN传达了一个可微分函数,该函数在输出层的可视化中表示为类分数。
如果您以前学习过神经网络,那么您可能对这些术语感到熟悉。那么,什么使CNN与众不同?CNN利用一种特殊类型的层,恰当地称为卷积层,使它们处于适当的位置以从图像和类似图像的数据中学习。关于图像数据,CNN可以用于许多不同的计算机视觉任务,例如图像处理,分类,分割和对象检测。

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

网络的每一层做什么?
让我们遍历网络中的每一层。在阅读时,单击并悬停在上面的可视化中,即可随意与上面的可视化进行交互。

输入层
输入层(最左边的层)代表输入到CNN中的图像。因为我们使用RGB图像作为输入,所以输入层具有三个通道,分别对应于该层中显示的红色,绿色和蓝色通道。单击网络详细信息图标上方的图标以显示详细信息(在此层以及其他层上)时,请使用色标。

卷积层
卷积层是CNN的基础,因为它们包含学习的内核(权重),这些内核提取出可将不同图像彼此区分开的特征-这就是我们想要的分类!与卷积层交互时,您会注意到先前各层与卷积层之间的链接。每个链接代表一个唯一的内核,该内核用于卷积操作以生成当前卷积神经元的输出或激活图。

卷积神经元执行具有唯一内核和上一层对应神经元输出的元素点积。这将产生与唯一内核一样多的中间结果。卷积神经元是所有中间结果与学习到的偏差相加的结果。

例如,让我们看一下上面的Tiny VGG架构中的第一个卷积层。请注意,此层中有10个神经元,但上一层中只有3个神经元。在Tiny VGG架构中,卷积层是完全连接的,这意味着每个神经元都与上一层中的每个其他神经元相连。着眼于第一卷积层最顶层的卷积神经元的输出,当我们将鼠标悬停在激活图上时,我们看到有3个唯一的内核。
在这里插入图片描述
图1.将鼠标悬停在第一个卷积层上最顶层节点的激活图上时,您会看到应用了3个内核来生成此激活图。单击此激活图后,您可以看到每个唯一内核都发生了卷积操作。
这些内核的大小是由网络体系结构的设计人员指定的超参数。为了产生卷积神经元(激活图)的输出,我们必须与上一层的输出以及网络学习到的唯一内核一起执行元素逐点积。在TinyVGG中,点积运算使用的跨度为1,这意味着内核将每个点积移出1个像素,但这是网络架构设计人员可以调整以使其更适合其数据集的超参数。我们必须对所有3个内核执行此操作,这将产生3个中间结果。
在这里插入图片描述
然后,执行包含所有3个中间结果以及网络已获学习的偏差的元素和。此后,所得的二维张量将是在第一卷积层中最顶层神经元的上方界面上可见的激活图。必须应用相同的操作来生成每个神经元的激活图。

通过一些简单的数学运算,我们可以推断出在第一个卷积层中应用了3 x 10 = 30个唯一的内核,每个内核的大小为3x3。卷积层与上一层之间的连通性是构建网络体系结构时的设计决策,它将影响每个卷积层的内核数量。单击可视化文件以更好地了解卷积层背后的操作。看看是否可以遵循上面的示例!

了解超参数
在这里插入图片描述
当内核扩展到激活图之外时,通常需要填充。填充可以在激活图的边界处保存数据,从而获得更好的性能,并且可以帮助保留输入的空间大小,从而使体系结构设计人员可以构建性能更高,更流畅的网络。存在许多填充技术,但是最常用的方法是零填充,因为它的性能,简单性和计算效率高。该技术涉及在输入的边缘周围对称地添加零。许多高性能的CNN(例如AlexNet)都采用了这种方法。
内核大小,通常也称为过滤器大小,是指输入上滑动窗口的尺寸。选择此超参数会对图像分类任务产生重大影响。例如,较小的内核大小能够从输入中提取大量包含高度局部特征的信息。如您在上面的可视化中所看到的,较小的内核尺寸也导致较小的层尺寸减小,这允许更深的体系结构。相反,较大的内核会提取较少的信息,这会导致层尺寸的减小更快,从而常常导致性能下降。大内核更适合提取更大的特征。最终,选择合适的内核大小将取决于您的任务和数据集,但是通常,越来越多的图层一起学习越来越复杂的功能!
大步走指示内核一次应移动多少像素。例如,如上面的卷积层示例所述,Tiny VGG对其卷积层使用步幅为1,这意味着在输入的3x3窗口上执行点积以产生输出值,然后将其移至每进行一次后续操作,就增加一个像素。跨度对CNN的影响类似于内核大小。随着步幅的减小,由于提取了更多的数据,因此可以了解更多的功能,这也导致了更大的输出层。相反,随着步幅的增加,这将导致特征提取更加受限,输出层尺寸更小。架构设计人员的职责之一是在实现CNN时确保内核对称地跨输入滑动。
激活功能
ReLU
神经网络在现代技术中极为盛行-因为它们是如此精确!当今性能最高的CNN包含大量荒谬的图层,这些图层能够学习越来越多的功能。这些突破性的CNN能够实现如此巨大的准确性的部分原因是因为它们的非线性。ReLU将急需的非线性应用到模型中。非线性是产生非线性决策边界所必需的,因此输出不能写为输入的线性组合。如果不存在非线性激活函数,那么深的CNN架构将演变为一个等效的卷积层,其性能几乎不一样。与其他非线性函数(例如Sigmoid)相反,ReLU激活函数专门用作非线性激活函数,因为从经验上已经观察到,使用ReLU的CNN的训练速度要快于它们的对应函数。

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

关系图
图3.绘制的ReLU激活函数,忽略了所有负面数据。
此激活函数逐个应用于输入张量中的每个值。例如,如果将ReLU应用于值2.24,则结果将为2.24,因为2.24大于0。您可以通过单击上方网络中的ReLU神经元来观察如何应用此激活功能。在上面概述的网络体系结构中的每个卷积层之后执行整流线性激活功能(ReLU)。注意该层对整个网络中各种神经元的激活图的影响!

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

您可能会想,标准归一化和softmax之间的区别是什么-毕竟,两者都会在0和1之间重新调整logit。请记住,反向传播是训练神经网络的关键方面-我们希望正确的答案具有最大的“信号”。 ” 通过使用softmax,我们可以有效地“逼近” argmax,同时获得微分。重新缩放不会使max的权重明显高于其他logit,而softmax的权重却不会。简而言之,softmax是一个“更软”的argmax-看看我们在那里做了什么?
在这里插入图片描述
汇聚层
在不同的CNN架构中,池化层的类型很多,但是它们的目的都是要逐渐减小网络的空间范围,从而减少网络的参数和总体计算。上面的Tiny VGG架构中使用的池类型为Max-Pooling。

最大池操作需要在体系结构设计期间选择内核大小和步幅。一旦选定,该操作将以指定的步幅在输入上滑动内核,同时仅从输入中选择每个内核切片上的最大值以产生输出值。通过单击上方网络中的合并神经元,可以查看此过程。

在上面的Tiny VGG体系结构中,池化层使用2x2内核,步幅为2。使用这些规范进行此操作将导致75%的激活被丢弃。通过丢弃如此多的值,Tiny VGG的计算效率更高,并且避免了过拟合。

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

互动功能
通过选择上传图片图标以了解您的图像如何分为10类来上传自己的图像。通过分析整个网络中的神经元,您可以了解激活图和提取的特征。
更改激活图色标,以通过调整更好地了解不同抽象级别的激活的影响热图。
单击网络详细信息图标图标,了解网络详细信息,例如图层尺寸和色标。
通过单击播放图标按钮来模拟网络操作,或者通过将鼠标悬停在输入或输出的各个部分上来了解映射和基础操作,从而与Interactive Formula View中的图层切片进行交互。
通过单击信息图标“ 交互式公式视图”以了解文章中的图层详细信息,以了解图层功能。
影片教学
CNN解释器简介 (0:00-0:22)
概述 (0:27-0:37)
卷积弹性解释视图 (0:37-0:46)
卷积,ReLU和池化交互式公式视图 (0:46-1:21)
展平弹性说明视图 (1:22-1:41)
Softmax 交互式公式视图 (1:41-2:02)
吸引学习经验:理解分类 (2:06-2:28)
互动教程文章 (2:29-2:54)
CNN解释器如何实施?
CNN Explainer使用TensorFlow.js(一个浏览器内GPU加速的深度学习库)加载经过预训练的模型以进行可视化。整个交互式系统使用Svelte作为框架并使用D3.js进行可视化,并以Javascript编写。您只需要一个网络浏览器就可以立即开始学习CNN!

谁开发了CNN Explainer?
CNN解释器由 Jay Wang, Robert Turko, Omar Shaikh, Haekyu Park, Nilaksh Das, Fred Hohman, Minsuk Kahng和 Polo Chau创建,这是佐治亚理工学院与俄勒冈州立大学进行研究合作的结果。我们感谢Anmol Chhabria,Kaan Sancak,Kantwon Rogers和乔治亚州技术可视化实验室的支持和建设性的反馈。NSF赠款IIS-1563816,CNS-1704701,NASA NSTRF,DARPA GARD以及来自英特尔,NVIDIA,Google和Amazon的礼物均部分支持了这项工作。

解释器学习笔记

在这里插入图片描述
在这里插入图片描述

CNN神经网络可视化工具2

该在线网络工具提供10多种经典网络的可视化文件,如AlexNet、GoogLeNet、YOLO、ResNet系列和Inception系列等。可以清楚看到每层的参数。

https://dgschwend.github.io/netscope/quickstart.html在这里插入图片描述

申明:

  1. 因为这个CNN可视化过程只能在PC端查看,所以翻译后可以随时手机观看。
  2. 因为CNN很抽象,分享出来希望大家对CNN有个可视化的了解
  3. 本文不涉及盈利,侵删。

碰巧,如果你看到了这篇文章,并且觉得有用的话 那就给个三连吧!
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浏览器上实现CNN可视化——清楚看到每一层卷积后的图 的相关文章

  • JUC-13. JMM

    想了解更多JUC的知识 JUC并发编程合集 1 Java内存模型 JMM Java内存模型Java Memory Model 简称JMM 本身是一种抽象的概念 并不真实存在 它描述的是一组规则或规范 通过规范定制了程序中各个变量 包括实例字
  • 凌乱的日期

    import java util ArrayList import java util Arrays import java util Collections import java util HashSet import java uti
  • ubuntu安装驱动 USB转转串口 232串口 PL2303 DB9

    ubuntu安装驱动 USB转串口 RS232串口 PL2303 DB9 工具 安装软件minicom minicom功能快捷键 minicom的使用 cutecom软件安装 cutecom使用 工具 因为我使用的是rs232串口设备芯片为
  • 6.Docker容器底层实现了解与安全机制

    原文地址 点击直达 文章目录 0x00 底层实现 基本架构 简述I O设备 1 命名空间 2 控制组 子系统之Devices 子系统之cpuset 子系统之cpu 子系统之cpuacct 子系统之memory 子系统之blki

随机推荐

  • 一看就懂TCP/IP协议族全析

    TCP IP协议族 计算机与网络设备要相互通信 双方就必须基于相同的方法 如何探测到通信目标 由那一边现发起通信 使用哪种语言 使用那种操作系统 怎样结束通信等都需要事先确定 不同的硬件 操作系统之间的相互通信 所有的这一切都需要一种规则
  • QDialog、QWidget、QMainWindow的区别

    QDialog QWidget QMainWindow的区别 dialog有exec函数 如果是dialog窗口 后边的窗口是不可选的 widget和dialog都有show函数 如果通过这个函数显示这两种类型的窗口 则两个窗口都是可选的
  • 国际带宽市场的发展趋势和前景

    随着全球互联网的不断普及和云计算 人工智能等新技术的迅猛发展 国际带宽市场在不断扩大 成为了全球信息通信领域的重要组成部分 本文将就国际带宽市场的发展趋势和前景进行探讨 一 市场概况 国际带宽是指一个国家或地区连接国际互联网所拥有的带宽资源
  • VMware Workstation Pro 16.2.4安装教程

    VMware Workstation Pro 16 2 4 安装教程 文章目录 VMware Workstation Pro 16 2 4 安装教程 下载最新版VMware 双击打开 自定义安装位置 把 去掉 点击下一步 等待安装 点击许可
  • 主从服务器 共用文件,Docker+keepalived+nginx实现主从热备的方法示例

    前言 为解决单点故障 我们需要配置主从热备方案 服务器数量有限 故使用Docker模拟安装配置 本次配置默认已经安装了Docker 配置环境 centos7 64位 docker版本 Docker version 17 12 1 ce bu
  • Apache Storm之集群安装

    1 环境 storm 1 2 1 Java 7 storm 1 x对java 7 和 java 8均进行了测试 Pytho 2 6 6 Python 3 x理论上也可以 但是并不作为storm的测试 以上是storm的环境 如果不匹配的ja
  • python-异常处理汇总

    1 需求 当程序遇到问题时 不让程序结束 而越过错误继续向下执行 格式 try 语句t except 错误码 语句1 except 错误码 语句2 except 错误码 语句3 except 错误码 语句n else 语句e 注意 else
  • 数字IC秋招面试专题(二)verilog的signed和unsigned

    数字IC秋招面试专题 二 verilog的signed和unsigned 前言 一 右值按signed还是unsigned 二 signed的自动扩位 三 系统函数 signed 和 unsigned 总结 声明 未经作者允许 禁止转载 推
  • ​【UI界面】Foobar2000 FlatLite 整合版

    Foobar2000 是一款本地音乐播放器 这里我就不再做介绍了 不懂的请自行了解 此 Foobar2000 FlatLite 主题包为整合版本 下载既可用 主题界面是模块化的 JS 面板 每个面板都是独立的 面板里的图标也是由 JS 脚本
  • JAVA字符串的两种定义方式的区别

    关于JAVA中两种字符串定义方式的区别 第一次写 就当复习总结一下 希望能帮到需要的人吧 我们知道在JAVA中 对于字符串的实例化方式有两种 直接赋值 String str Hello World 构造方法实例化 String str ne
  • 编写dylib_如何使用第三方的dylib

    展开全部 所谓dylib 就是bsd风格的动态库 基本可以认为等价于e5a48de588b63231313335323631343130323136353331333339663331windows的dll和linux的so mac基于bs
  • car

    本篇介绍如何检验回归结果是否符合模型假设 以及样本中是否存在异常点 本篇使用的主要工具包是car 包名是Companion to Applied Regression的缩写 该包提供了许多用于模型检验的函数 初始模型如下 library c
  • HTML快速参考指南

    目录 HTML 基础文档 文本元素 逻辑样式 物理样式 链接 锚 图像元素 无序列表 有序列表 定义列表 表格 框架 表单 实体 其他元素 HTML 基础文档 Visible text goes here 文本元素 p This is a
  • windows下编写shell脚本完美解决换行问题$'\r': command not found

    前面已经写过另外一边关于解决编写shell脚本换行的问题 即在Linux下执行命令 sed i s r g 文件名称 比如 sed i s r g host1 sh 今天是另外一种方式解决 使用ultraEdit软件编写shell脚本 新建
  • 【mysql】出现 slow sql 问题及建议

    文章目录 1 SQL 执行什么情况下会变慢 2 影响 SQL 语句执行效率的主要因素有哪些 3 慢 SQL 是如何拖垮数据库的 4 最佳实践建议 1 SQL 执行什么情况下会变慢 数据量增加 数据库中的数据量可能会逐渐增加 导致查询变慢 查
  • Python 常用写法

    时间 1 now import datetime now datetime now nowStr now strftime now Y m d H M S list 1 分割最后一个 arr str rsplit 1 2 数组 加索引 en
  • 学习C++项目——select模型,poll模型和epoll模型

    学习计算机网络编程 一 思路和学习方法 本文学习于 C语言技术网 www freecplus net 在 b 站学习于 C 语言技术网 并加以自己的一些理解和复现 如有侵权会删除 接下来应该是网络编程部分最难也是最常用的部分 同时在这一章我
  • 系统分析与设计——UML图总结

    一 前言 期末考试之前 我复习系统分析与设计的时候对UML图做了一些知识汇总 现在放到博客上 如果有不对或不恰当的地方 欢迎各位指正 本文仅仅起记录作用 可随意转载 荣幸之至 截图来自网络或是老师的PPT 二 概述 系统模型的三个主要部分
  • flutter 键盘挡住输入框问题

    bool isShowKeyboard false double keyboardSize 260 软键盘高度 类添加with WidgetsBindingObserver 生命周期监听器 class SendRedEveDialogSta
  • 浏览器上实现CNN可视化——清楚看到每一层卷积后的图

    目录 本文作用 CNN神经网络可视化工具1 解释器学习笔记 CNN神经网络可视化工具2 本文作用 学习卷积神经网络时 我们只知道输入一张图片后 通过一顿操作 便可以提取图片中的特征 我们对于其内部的操作 只有理论了解 并没有做到眼见为实 这