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

拓扑推理:把邻接矩阵和节点特征形式数据集转换为可以训练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.dtcms.com/a/249441.html

相关文章:

  • 展开说说Android之Glide详解_源码解析
  • YOLOV8模型优化-选择性视角类别整合模块(SPCI):遥感目标检测的注意力增强模型详解
  • [论文阅读] 人工智能 | Gen-n-Val:利用代理技术革新计算机视觉数据生成
  • U盘不识别 个别U盘不识别
  • 《人工智能时代与人类价值》读书简要笔记
  • 超强人工智能解决方案套件InfiniSynapse:精准的业务理解、对各种数据源进行全模态联合智能分析--部署安装@Ubuntu22.04 @Docker
  • Burn 开源程序是下一代深度学习框架,在灵活性、效率和可移植性方面毫不妥协
  • Day 49 训练
  • 【0.4 漫画计算机网络基础】
  • 基于Python学习《Head First设计模式》第十四章 剩下的模式
  • SparkUI依赖问题解决方法
  • pyspark非安装使用graphframes
  • 【生活系列】金刚经
  • Spark DAG、Stage 划分与 Task 调度底层原理深度剖析
  • 轮廓 裂缝修复 轮廓修复 填补孔洞 源代码
  • HTTP 缓存策略:强缓存与协商缓存的深入解析
  • HTTP和HTTPS协议
  • HTTP 请求报文 方法
  • 基于GNU Radio Companion搭建的FM信号及数字通信
  • 论文略读: LAYERWISE RECURRENT ROUTER FOR MIXTURE-OF-EXPERTS
  • 15.vue.js的watch()和watchEffect()(2)
  • MVVM、MVP、MVC
  • java常见第三方依赖以及相关安全问题
  • java 设计模式_行为型_14策略模式
  • 数据结构 学习 队列 2025年6月14日 11点22分
  • 智能穿戴平台与医疗AI融合发展路径研究
  • 微信小程序使用画布实现飘落泡泡功能
  • 【软测】node.js辅助生成测试报告
  • RK3568 usb gadget功能配置
  • QCombobox设置圆角下拉列表并调整下拉列表位置