如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码

简介: 该博客展示了如何通过Python预处理神经网络权重矩阵并将其导出为表格,然后使用Chiplot网站来可视化神经网络的神经元节点之间的连接。

如何可视化神经网络的神经元节点之间的连接?

1 导出表格

将网络的权重矩阵导出为三个表格

(1)nodes.csv

一列表示,为每个节点的编码

node
node1
node2
node3
node4
node5
node6
node7
node8
node9

(2)links.csv

这个表格表示节点的连接,第一列为顺序编码,唯一表示,第二列是节点的起点,第二个为节点的终点

id source target
1 node1 node2
2 node1 node3
3 node1 node4
4 node1 node7
5 node1 node8
6 node1 node10
7 node1 node13
8 node1 node14
9 node1 node16
10 node1 node19
11 node1 node20
12 node1 node26
13 node1 node29
14 node1 node38

(3)node_class.csv

这个表格表示每个节点的类别,方便后续对不同的节点绘制不同的颜色

id class
node1 hub node
node2 hub node
node3 hub node
node4 non-hub node
node5 hub node
node6 hub node
node7 hub node
node8 non-hub node
import pandas as pd

# 将小数值的权重矩阵转为0-1表示的矩阵
def convert_to_binary(matrix):
    binary_matrix = []
    for row in matrix:
        binary_row = [1 if value != 0 else 0 for value in row]
        binary_matrix.append(binary_row)
    return np.array(binary_matrix)

def generate_data(W):

    adj_binary_matrix = convert_to_binary(W)
    # 初始化邻接矩阵
    adj_matrix = adj_binary_matrix

    # 获取节点数量
    num_nodes = adj_matrix.shape[0]

    # 生成节点编码
    node_codes = ['node' + str(i+1) for i in range(num_nodes)]

    # 创建 nodes.csv 文件
    nodes_df = pd.DataFrame(node_codes, columns=['node'])


    # 创建 links.csv 文件
    links = []
    id = 1
    for i in range(num_nodes):
        for j in range(num_nodes):
            if adj_matrix[i][j] == 1:
                links.append((id, node_codes[i], node_codes[j]))
                id+=1

    links_df = pd.DataFrame(links, columns=['id', 'source', 'target'])
    links_df.to_csv(f'links.csv', index=False)
    nodes_df.to_csv(f'nodes.csv', index=False)
    # 对网络不同度的节点分类,分为高度节点((hub))和非高度节点(non-hub)

    # 计算每个节点的度
    degrees = np.sum(adj_matrix != 0, axis=1)

    # 定义度的连接比例为threshold的为hub节点
    threshold  = 0.7
    threshold_degree = np.quantile(degrees,threshold)
    # 根据节点的度将它们分为两类
    node_classes = ['hub node' if degree >= threshold_degree else 'non-hub node' for degree in degrees]

    # 将结果保存到名为node_class.csv的表格中
    result = pd.DataFrame({'id': node_codes, 'class': node_classes})
    result.to_csv('node_class.csv', index=False)
# 假设神经网络每个神经元之间的邻接矩阵
# 初始化一个10*10的邻接矩阵,初始值全为0
adj_matrix = [
    [-0.000000,0.000000,0.000000,0.000000,0.000000,-0.000000,0.122116,-0.029914,0.364874,0.000000],
[0.000000,-0.000000,-0.003972,-0.035493,-0.412647,-0.000000,-0.000000,-0.000000,-0.000000,-0.000000],
[-0.000000,-0.086977,-0.000000,0.190105,0.000000,-0.153798,-0.000000,0.189070,0.000000,-0.000000],
[-0.000000,0.368288,-0.000000,-0.000000,-0.000000,0.057519,0.000000,-0.000000,0.000000,-0.000000],
[0.000000,-0.000000,-0.214501,0.000000,-0.443936,0.000000,0.000000,0.000000,-0.000000,-0.000000],
[-0.000000,-0.172708,0.052662,-0.184544,0.000000,0.024721,0.000000,-0.300713,-0.414200,0.000000],
[-0.137718,0.000000,0.000000,-0.000000,-0.000000,0.258740,0.099708,0.000000,0.032948,-0.190810],
[-0.000000,-0.106000,0.195423,0.000000,-0.000000,0.029322,-0.000000,0.077991,0.000000,-0.000000],
[0.252584,-0.077399,-0.000000,-0.000000,0.000000,-0.338475,0.498515,0.000000,-0.238516,0.597768],
[-0.000000,0.000000,0.048298,-0.000000,-0.000000,0.000000,0.016180,-0.000000,0.176588,0.000000]]
generate_data(adj_matrix)

2 绘图

免费从Chiplot网络绘制,导入以上生成的三个表格,网站有具体的教程
ChiPlot网站

在这里插入图片描述

在这里插入图片描述

目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 算法
基于FPGA的SNN脉冲神经网络之IM神经元verilog实现,包含testbench
本内容介绍了一种基于Izhikevich-Memristive(IM)神经元模型的算法,该模型结合忆阻器特性和神经元动力学,适用于神经形态计算。算法通过Vivado2019.2运行,提供无水印运行效果预览及部分核心程序,完整版含中文注释与操作视频。理论部分详细解析了Izhikevich神经元方程及其放电行为,包括膜电位、恢复变量等参数的作用,并探讨了IM模型在人工智能和脑机接口领域的应用潜力。
|
2月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
91 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
2月前
|
传感器 算法 数据安全/隐私保护
基于GA遗传优化的三维空间WSN网络最优节点部署算法matlab仿真
本程序基于遗传算法(GA)优化三维空间无线传感网络(WSN)的节点部署,通过MATLAB2022A实现仿真。算法旨在以最少的节点实现最大覆盖度,综合考虑空间覆盖、连通性、能耗管理及成本控制等关键问题。核心思想包括染色体编码节点位置、适应度函数评估性能,并采用网格填充法近似计算覆盖率。该方法可显著提升WSN在三维空间中的部署效率与经济性,为实际应用提供有力支持。
|
2月前
|
Cloud Native 区块链 数据中心
Arista CloudEOS 4.32.2F - 云网络基础架构即代码
Arista CloudEOS 4.32.2F - 云网络基础架构即代码
61 1
|
3月前
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
310 31
|
3月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于FPGA的SNN脉冲神经网络之LIF神经元verilog实现,包含testbench
本项目展示了 LIF(Leaky Integrate-and-Fire)神经元算法的实现与应用,含无水印运行效果预览。基于 Vivado2019.2 开发,完整代码配有中文注释及操作视频。LIF 模型模拟生物神经元特性,通过积分输入信号并判断膜电位是否达阈值产生脉冲,相较于 Hodgkin-Huxley 模型更简化,适合大规模神经网络模拟。核心程序片段示例,助您快速上手。
|
4月前
|
机器学习/深度学习 数据可视化 PyTorch
深入解析图神经网络注意力机制:数学原理与可视化实现
本文深入解析了图神经网络(GNNs)中自注意力机制的内部运作原理,通过可视化和数学推导揭示其工作机制。文章采用“位置-转移图”概念框架,并使用NumPy实现代码示例,逐步拆解自注意力层的计算过程。文中详细展示了从节点特征矩阵、邻接矩阵到生成注意力权重的具体步骤,并通过四个类(GAL1至GAL4)模拟了整个计算流程。最终,结合实际PyTorch Geometric库中的代码,对比分析了核心逻辑,为理解GNN自注意力机制提供了清晰的学习路径。
386 7
深入解析图神经网络注意力机制:数学原理与可视化实现
|
4月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
296 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
4月前
|
Kubernetes Shell Windows
【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享
在AKS中遇到复杂网络问题时,可通过以下步骤进入特定POD抓取网络包进行分析:1. 使用`kubectl get pods`确认Pod所在Node;2. 通过`kubectl node-shell`登录Node;3. 使用`crictl ps`找到Pod的Container ID;4. 获取PID并使用`nsenter`进入Pod的网络空间;5. 在`/var/tmp`目录下使用`tcpdump`抓包。完成后按Ctrl+C停止抓包。
158 12
|
4月前
|
监控 算法 安全
公司电脑网络监控场景下 Python 广度优先搜索算法的深度剖析
在数字化办公时代,公司电脑网络监控至关重要。广度优先搜索(BFS)算法在构建网络拓扑、检测安全威胁和优化资源分配方面发挥重要作用。通过Python代码示例展示其应用流程,助力企业提升网络安全与效率。未来,更多创新算法将融入该领域,保障企业数字化发展。
111 10

热门文章

最新文章