Zetane Engine : 神经网络一键可视化

转自:神经网络一键可视化!这个AI神器可以放大网络中的任何一层,显示特征图!

 GitHub - zetane/viewer: ML models and internal tensors 3D visualizer

注:该神器只能对 ONNX, Keras(.h5) 以及 ZTN 的模型进行可视化。

如果是 .pth 模型,可以考虑模型转换:

Pytorch训练的模型转.onnx、.pb、.h5、.tftile_developer&learner的博客-CSDN博客_onnx转h5

当然,转换后是否还可以可视化,还没有尝试。后续用到时,再更新说明吧。

神经网络在工作的时候,里面到底是什么样?

为了能透视这个“AI黑箱”中的过程,加拿大蒙特利尔一家公司开发一个3D可视化工具Zetane Engine。

只需要上传一个模型,Zetane Engine 就可以巡视整个神经网络,并且还可以放大网络中的任何一层,显示特征图,看清流水线上的每一步:

目前Zetane Engine不同系统的版本都可以在 GitHub中找到,话不多说,来看看Zetane Engine具体的用法吧~

可视化AI工作流程

首先,我们需要上传一个模型,例如一个识别手写数字的神经网络,输入的图片是一个手写的“2”:

上传之后,Zetane Engine就绘制出了一条“流水线”,每一层神经网络就像一个个工作间:

从输入到卷积,再到连接、激活、池化:

这些个小工作间的进展也是透明的,不信我们聚焦到一个卷积层工作间,点这个图片形状的按钮:

只有这些还不够,高能现在才刚开始,注意图片按钮右边九个点形状的按钮了吗?

点击它,Zetane Engine会在界面右边展示出一个工具栏,把刚才显示在卷积层上面的图片呈现出各种各样的形式~

其中有排列成三维立体的、标注卷积结果数值的,以及纯数值的应有尽有:

二维视角

三维视角

标注卷积结果的平面图

纯卷积结果的数值平面图

这样的“工作报告”,谁看了不喜欢?不仅能够可视化地看到卷积过程,还可以调出每一个像素点上的卷积结果。

这还没完,这种多角度的图像处理在连接层、激活层、池化层等工作间也同样适用:

图注:激活层特征图

图注:池化层特征图

一整个看下来,神经网络的工作流程都清清楚楚:

到了最后的全连接输出层,模型会输出一个十列的一维向量(下图右边),用来判断手写数字是0-9的哪一个。

在这个例子中,模型给出了可能性最高的就是数字2。

怎么样?有了这样可视化的工具,是不是感觉AI模型不再是一个黑箱了?

Zetane Engine用法速览

Zetane Engine不同系统的版本(Windows、Linux、Mac)都可以在GitHub中找到。

这里我们简单介绍一下Zetane Engine的界面和启动台,方便大家快速熟悉。

打开之后界面是比较简洁的,只有左上角和右上角有一些按钮。我们先看左上角。

上传模型的按钮在启动台左上角Z字标志这里,Zetane Engine支持ONNX、Keras(.h5)以及ZTN三种模型文件。

Z字按钮旁边两个按钮依次是启动模型和清除模型:

如果手头上还没有模型也没关系,点击界面右上角的Z形图标可以到Zetane Engine的模型库中下载模型:

图注:Zetane Engine的模型库

另外在启动台SNAPSHOTS按钮这里也有一些经典模型可以选择:

感兴趣的同学可以从文末链接中找到Zetane Engine的下载包,来试试吧~

参考链接:

[1]https://github.com/Zetane/viewer
[2]https://www.youtube.com/watch?v=J3Zd5GR_lQs

  • 2
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
### 回答1: engine:enqueue和engine:dispatch都是游戏引擎中的方法,用于处理游戏中的事件。它们的区别在于: 1. engine:enqueue是将事件加入到事件队列中,等待处理。这个方法是异步的,事件并不会立即执行,而是等待游戏引擎处理完其他的事件后再执行。这种方式可以增加游戏的响应速度。 2. engine:dispatch是立即执行事件。这个方法是同步的,事件会立即执行。如果有多个事件需要处理,会按照加入的顺序依次执行。 总的来说,engine:enqueue适合在需要处理大量事件的情况下,可以让游戏引擎更好地管理事件队列;engine:dispatch适合在需要立即执行事件的情况下,比如玩家按下某个按键时需要立即响应。 ### 回答2: engine:enqueue和engine:dispatch都是通信引擎(communication engine)中的方法,用于在程序中进行事件管理和任务分发。它们的区别在于下面几个方面: 1.功能不同: - engine:enqueue方法用于将一个事件(event)放入到事件队列中,等待被处理。它通常用于将一个任务添加到队列中,以便在适当的时候执行。 - engine:dispatch方法用于直接将事件派发给目标对象,无需将事件放入队列中。它通常用于即时触发事件,以及将事件传递给特定的对象进行处理。 2.执行时机不同: - 对于engine:enqueue方法,事件将按照队列中的顺序进行处理,先进先出。事件的执行可能会被推迟,直到队列中的前面的任务执行完毕。 - 对于engine:dispatch方法,事件将立即触发执行,不需要等待其他任务完成。它通常用于需要立即执行的任务或与特定对象相关的事件。 3.应用场景不同: - engine:enqueue方法适用于需要按顺序执行的任务,可以保证任务之间的相对顺序。 - engine:dispatch方法适用于需要即时执行的任务,或者需要将事件传递给特定对象进行处理的场景。 总的来说,engine:enqueue方法用于将任务添加到队列中进行调度,而engine:dispatch方法用于立即触发执行任务。根据具体的应用场景选择合适的方法可以提高程序的效率和灵活性。 ### 回答3: engine:enqueue和engine:dispatch是两种不同的调度方式。 engine:enqueue是指将任务添加到引擎的任务队列中,然后根据队列中任务添加的顺序依次执行。这种方式适用于任务之间无关联、无依赖关系的情况。任务会按照添加的先后顺序进行执行,不会产生并发执行的效果。 engine:dispatch是指引擎直接调度任务的执行顺序,可以按照一定的调度策略来执行任务。这种方式适用于任务之间有依赖关系或需要并发执行的情况。引擎可以根据任务之间的依赖关系或者其他调度算法,合理地安排任务的执行顺序,以提高效率或满足业务需求。 总结来说,engine:enqueue是简单地将任务添加到队列中,顺序执行;而engine:dispatch可以根据调度策略灵活地调整任务的执行顺序。选择使用哪种方式取决于具体的业务需求和任务之间的关系。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值