当前位置: 首页 > ds >正文

拓扑推理:把邻接矩阵和节点特征形式数据集转换为可以训练CNN等序列模型的数据集

原始数据:

Signals存了1000个30节点的节点特征

Tp存了1000个邻接矩阵

Tp_list存了1000个关系真正列表

上面这种数据比较适合Pytorch Geometric架构下生成训练图神经网络模型的数据集:

但如果用CNN等序列模型进行拓扑推理,得遍历拼接节点特征对。

比如我要预测节点i与节点j是否有关系,我把节点i的特征(长度L)和节点j的特征(长度L)串起来(长度2L),用一维CNN或RNN什么的进行预测。

这个时候需要对上面的数据集略微处理,程序如下:

def generate_dataset():dataset_n = 1000base_dir = "D:\无线通信网络认知\论文1\大修意见\Reviewer2-7 多种深度学习方法对比实验\\test data 30 (mat)\\"mat_file = h5py.File(base_dir  + '30_nodes_dataset.mat', 'r')# 获取数据集signals = mat_file["Signals"][()]tp = mat_file["Tp"][()]tp_list = mat_file["Tp_list"][()]Signals = np.swapaxes(signals, 2, 0)Tp = np.swapaxes(tp, 2, 0)# tp_list = tp_list - 1# 关闭文件mat_file.close()#把每张图的数据和标签都装进去x_list = []y_list = []for n in range(0,dataset_n,1):# print("n: ",n)signals = Signals[n,:,:]L = 2 * signals.shape[1]  # 待分析的2个信号拼在一起tp = Tp[n,:,:]# x 的形状为 (100000, 3600)x = np.zeros((N * N, L))# y 的形状为 (100000, 1)y = np.zeros((N * N, 1))# 生成 x 和 yindex = 0#处理正样本for i in range(N):for j in range(N):if i!=j and tp[i, j]==1:combined_signal = np.concatenate((signals[i, :], signals[j, :]))x[index, :] = combined_signaly[index, 0] = 1index += 1#算负样本总共有多少n_pair_list = []for i in range(N):for j in range(N):if i!=j and tp[i, j] == 0:n_pair_list.append((i,j))np.random.seed(42)indices = np.arange(len(n_pair_list))np.random.shuffle(indices)n_pair_list = np.array(n_pair_list)n_pair_list = n_pair_list[indices]#根据正样本数取负样本n_pair = n_pair_list[:index,:]for k in range(n_pair.shape[0]):i = n_pair[k, 0]j = n_pair[k, 1]combined_signal = np.concatenate((signals[i, :], signals[j, :]))x[index, :] = combined_signaly[index, 0] = 0index += 1x = x[:index,:]y = y[:index, :]x_list.append(x)y_list.append(y)x = np.vstack(x_list)y = np.vstack(y_list)return x, y

最终,数据和真值存储在x和y中:

http://www.xdnf.cn/news/14395.html

相关文章:

  • 树莓派智能小车基本移动实验指导书
  • k8s使用私有harbor镜像源
  • Activiti初识
  • C/C++的OpenCV 地砖识别
  • Linux文件权限管理核心要点总结
  • 精准测量 MySQL 主从复制延迟—pt-heartbeat工具工作原理
  • 从零搭建MySQL主从复制并集成Spring Boot实现读写分离
  • Python3安装MySQL-python踩坑实录:从报错到完美解决的实战指南
  • 模块拆解:一览家政维修小程序的“功能蓝图”
  • Blender——建构、粒子、灯光、动画
  • 1.1 Linux 编译FFmpeg 4.4.1
  • import引入api报select.default is not a function异常解析
  • FreeRTOS任务优先级和中断的优先级
  • XMLDecoder、LDAP 注入与修复
  • Android Studio Windows安装与配置指南
  • HTML+CSS 动态背景动态登录注册框
  • Vue3 + TypeScript + Element Plus 设置表格行背景颜色
  • G_DEFINE_TYPE的作用
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-个人博客(十)
  • platformIO开发ESP32程序时,出现崩溃重启时如何根据堆栈定位到源代码位置
  • 节日快乐啊
  • 【Docker基础】Docker核心概念:资源隔离详解
  • Docker run 子命令与运行优化相关的参数
  • 因为没有使用路由懒加载,产生了一个难以寻找的bug
  • std::shared_ptr引起内存泄漏的例子
  • Guava RateLimiter 使用详解:从基础使用到生产实践
  • js调试技巧
  • Meta推出AI视频重塑风格工具,现已在Meta AI和Instagram的Edits应用中上线
  • 【项目实训#10】HarmonyOS API文档RAG检索系统后端实现
  • DAY 31 文件的规范拆分和写法