高颜值的神经网络可视化工具:3D、彩色、可定制,还能可视化参数重要性

本文介绍了一款名为nn_vis的神经网络可视化工具,它通过3D可视化展示模型架构、参数评估与剪枝效果,帮助理解网络内部工作原理。通过实例和参数调整,展示了如何增强模型透明度并优化模型复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:量子位

最近,一款神经网络可视化工具火了。

这款工具叫做「nn_vis」,它采用了新的3D可视化技术,可以呈现这样的效果:

d9eea51ac2e39d246e9d200991091d1b.gif

其作者表示,之所以创建这个工具,是由于神经网络内部缺乏透明度,很难为不同任务选择有效的架构。

nn_vis究竟有什么与众不同?一起来了解一下。

它能够创建神经网络模型,还可以通过参数设置,得到不同的呈现形式;

2cabcc49c66bbe19cefbbae6b95b308c.png

1935894a62564e45cedf37957408f4a8.png

并且,根据参数重要性的评估结果,对神经网络进行剪枝,从而简化模型;

同时,还可以对神经网络绑定过程实现可视化。

ea5b7ef714d18fba54a33d51dbe40721.png

那么,这些功能是怎样实现的呢?

nn_vis利用神经网络优化领域的已有方法,采用批标准化、微调以及特征提取,评估训练后的神经网络不同部分的重要性。

再结合边绑定、光线跟踪、3D impostor和特殊的透明技术等,得到神经网络的3D模型,证明了评估结果的有效性。

具体来看看~

1a43cda4c5aeecb41214d14e0b8e626f.png

参数准备

首先通过 configs/processing.json ,进行神经网络处理的参数准备,就像这样:

{
    "edge_bandwidth_reduction": 0.9,
    "edge_importance_type": 0,
    "layer_distance": 0.5,
    "layer_width": 1.0,
    "node_bandwidth_reduction": 0.95,
    "prune_percentage": 0.0,
    "sampling_rate": 15.0,
    "smoothing": true,
    "smoothing_iterations": 8
}

也可以在图形用户界面进行设置:

9cbdc4223e842478d04d71712b4dbb09.png

c485e4dcb87f2c60df64c2f68d36921a.png

创建神经网络模型

使用可视化工具start_tool.py,并选择神经网络Load Processed Network。

除了现有的网络,还可以生成随机网络,以及处理各种大小的网络。

与最常用的参数相比,可视化可以使训练参数更为结构化。

经过不同的训练,通过旋转、切换相机位置、截屏,可以得到类似这样的效果:

22f3036ba7fba07552b2ae4a96ba3539.png

边越靠近,神经网络这些部分的泛化程度就越大,即更容易适应新的数据样本。

•  左侧的神经网络没有经过随机分配的值的训练:节点和边距离中心分布的更远;

•  中间的则经过一些基本训练,达到90%以上的准确性。

•  右侧的神经网络以相同方式训练,并且采用L1正则化防止过拟合,得到了具有相似准确性的最窄的模型。

6f6fced74ea2f0d993636a174c434f3c.png

评估各节点的重要性

根据节点和边的重要性进行着色,不同的颜色表示神经网络的每一部分,用来预测它们的关联性。

0d860a10d5bab36b07697bd53aec4c2f.png

通过左图可以看出,修剪不重要的参数,不会像重要参数那样影响模型的预测准确性。

右图则显示出,根据类别的重要性修剪神经网络时,重要类别能够保留准确性。与整体准确性相比,重要类别的准确性始终更高。

通过对神经网络进行剪枝,即剪掉不重要的冗余参数,降低了模型的复杂度和过拟合风险,提升了泛化程度,得到更高效、训练成本更低的神经网络。

由此证明了重要性评估的有效性。

b9cf84d04421a45d50d35145db22e185.png

绑定过程可视化

通过不断迭代实现神经网络的绑定,大致过程是这样的:

096cd4998b3c850dd68fcf32b8e6bcaf.png

可视化的神经网络绑定过程:

673f4a2bf6f4d10745a36d6a01ee3f14.png

需要注意的是,处理每层的神经网络需要一定时间,计算并不是实时的。

7c8042ea5805326a4abf3f6c6437c6ad.png

不同的可视化效果

在图形用户界面或者通过configs/rendering.json,修改着色器参数,包括:

尺寸、对象的基本不透明度、即重要性对不透明度的影响比率、相机的距离对不透明度的影响比率、物体上不同点的密度对不透明度的影响比率、根据对象的重要性定义渲染对象的阈值。

即可得到不同的可视化效果:

a9143cb1ad2b51a173009c4c0f165a87.png

对这款工具感兴趣的朋友,可以通过文末链接获取~

GitHub项目地址:
https://github.com/julrog/nn_vis

---------End---------

2ea500d983c8e72394e00981b9dbe0ed.png

精选资料

回复关键词,获取对应的资料:

关键词资料名称
600《Python知识手册》
md《Markdown速查表》
time《Python时间使用指南》
str《Python字符串速查表》
pip《Python:Pip速查表》
style《Pandas表格样式配置指南》
mat《Matplotlib入门100个案例》
px《Plotly Express可视化指南》

精选内容

da2ac20c831901c10804a584c76435c4.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值