如何可视化神经网络的神经元节点之间的连接?附有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网站

在这里插入图片描述

在这里插入图片描述

目录
相关文章
|
7天前
|
数据采集 传感器 数据可视化
利用Python进行数据分析与可视化
【9月更文挑战第11天】在数字化时代,数据已成为企业决策和科学研究的关键。本文将引导读者了解如何使用Python这一强大的工具进行数据分析和可视化,帮助初学者理解数据处理的流程,并掌握基本的可视化技术。通过实际案例,我们将展示如何从原始数据中提取信息,进行清洗、处理,最终以图形方式展现结果,使复杂的数据变得直观易懂。
|
19天前
|
安全 网络安全 开发者
探索Python中的装饰器:简化代码,增强功能网络安全与信息安全:从漏洞到防护
【8月更文挑战第30天】本文通过深入浅出的方式介绍了Python中装饰器的概念、用法和高级应用。我们将从基础的装饰器定义开始,逐步深入到如何利用装饰器来改进代码结构,最后探讨其在Web框架中的应用。适合有一定Python基础的开发者阅读,旨在帮助读者更好地理解并运用装饰器来优化他们的代码。
|
18天前
|
开发者 图形学 API
从零起步,深度揭秘:运用Unity引擎及网络编程技术,一步步搭建属于你的实时多人在线对战游戏平台——详尽指南与实战代码解析,带你轻松掌握网络化游戏开发的核心要领与最佳实践路径
【8月更文挑战第31天】构建实时多人对战平台是技术与创意的结合。本文使用成熟的Unity游戏开发引擎,从零开始指导读者搭建简单的实时对战平台。内容涵盖网络架构设计、Unity网络API应用及客户端与服务器通信。首先,创建新项目并选择适合多人游戏的模板,使用推荐的网络传输层。接着,定义基本玩法,如2D多人射击游戏,创建角色预制件并添加Rigidbody2D组件。然后,引入网络身份组件以同步对象状态。通过示例代码展示玩家控制逻辑,包括移动和发射子弹功能。最后,设置服务器端逻辑,处理客户端连接和断开。本文帮助读者掌握构建Unity多人对战平台的核心知识,为进一步开发打下基础。
39 0
|
18天前
|
安全 开发者 数据安全/隐私保护
Xamarin 的安全性考虑与最佳实践:从数据加密到网络防护,全面解析构建安全移动应用的六大核心技术要点与实战代码示例
【8月更文挑战第31天】Xamarin 的安全性考虑与最佳实践对于构建安全可靠的跨平台移动应用至关重要。本文探讨了 Xamarin 开发中的关键安全因素,如数据加密、网络通信安全、权限管理等,并提供了 AES 加密算法的代码示例。
30 0
|
18天前
|
安全 Apache 数据安全/隐私保护
你的Wicket应用安全吗?揭秘在Apache Wicket中实现坚不可摧的安全认证策略
【8月更文挑战第31天】在当前的网络环境中,安全性是任何应用程序的关键考量。Apache Wicket 是一个强大的 Java Web 框架,提供了丰富的工具和组件,帮助开发者构建安全的 Web 应用程序。本文介绍了如何在 Wicket 中实现安全认证,
30 0
|
18天前
|
机器学习/深度学习 数据采集 TensorFlow
从零到精通:TensorFlow与卷积神经网络(CNN)助你成为图像识别高手的终极指南——深入浅出教你搭建首个猫狗分类器,附带实战代码与训练技巧揭秘
【8月更文挑战第31天】本文通过杂文形式介绍了如何利用 TensorFlow 和卷积神经网络(CNN)构建图像识别系统,详细演示了从数据准备、模型构建到训练与评估的全过程。通过具体示例代码,展示了使用 Keras API 训练猫狗分类器的步骤,旨在帮助读者掌握图像识别的核心技术。此外,还探讨了图像识别在物体检测、语义分割等领域的广泛应用前景。
9 0
|
4天前
|
SQL 安全 网络安全
网络安全与信息安全:构建防线的三大支柱在数字时代,网络安全和信息安全成为了我们不可忽视的重要议题。本文将深入探讨网络安全漏洞、加密技术以及安全意识这三大支柱,帮助您建立更全面的安全防护体系。
本文旨在分享有关网络安全漏洞、加密技术和安全意识的知识。首先,我们将介绍常见的网络安全漏洞及其形成原因;接着,我们将探讨几种主要的加密技术及其应用;最后,我们将强调提高安全意识的重要性并提供实用的建议。通过这些内容,读者可以更好地理解如何在日常生活和工作中保护自己的信息安全。
23 9
|
3天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第15天】在数字化时代,网络安全与信息安全已成为我们日常生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的知识,以帮助读者更好地了解和应对网络安全挑战。通过深入浅出的方式,我们将探讨如何保护个人信息和数据安全,以及如何提高自己的网络安全意识。
|
4天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全的守护之道
本文深入探讨了网络安全与信息安全领域的核心议题,包括网络安全漏洞、加密技术以及安全意识的重要性。通过对这些关键领域的分析,旨在为读者提供全面的技术知识分享和实践建议,以增强个人和企业的网络安全防护能力。
|
2天前
|
存储 安全 网络安全
网络安全与信息安全:守护数字世界的坚盾
在这个数字时代,网络安全已成为我们生活中不可或缺的一部分。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,旨在帮助读者更好地保护自己的信息安全,避免潜在的网络威胁。通过深入浅出的方式,我们将揭示如何识别和防范网络攻击,以及如何利用先进的加密技术来保护个人和组织的数据安全。同时,我们还将强调培养良好的安全习惯,以构建更加安全的网络环境。