torch-geometric:torch_cluster库knn_graph函数详解

torch-geometric:torch_cluster库knn_graph函数详解
  今天在阅读⼀份图神经⽹络的代码时碰到了knn_graph函数。图神经⽹络如果使⽤动态图,通常需要获取节点的k近邻作为邻居节点,这个时候就会⽤到knn_graph函数了。knn_graph函数并不是torch-geometric⾃带的,⽽是torch_cluster库中的函数,这也可以说明为什么安装torch-geometric前需要先安装torch_cluster库。
  这⾥,我从⾥搬运knn_graph函数的参数说明和例⼦进⾏介绍:
dv观察
  从这份中可以看到,这个函数是⽤来计算k近邻的,常⽤的参数有:
  (1)x:输⼊张量,即所有节点的特征,形状为[N, F];
  (2)batch:⼀般每个epoch都会对⼀个batch的样本数据进⾏处理,⽽不是单个样本。这个参数是⽤来指代输⼊的N个节点分别属于batch中的哪个样本,参数形状为[N]。dataloader⼀般会提供这个参数;
  (3)loop:是否包括⾃环,默认为false;
  (4)flow:信息流动⽅向,其实就是输出是中⼼节点位置在前,还是邻居节点位置在前,默认为source_to_target,即邻居节点位置在前;
  (5)cosine:是否使⽤cosine距离计算节点的间距,默认为false;单子论
  另外还有r参数和num_workers参数,因为没⽤过,这⾥只给出猜测:r参数猜测是限定在r距离范围内寻邻居节点,⽽这⾥的
知网向退休教授致歉
num_workers参数猜测和dataloader中的num_workers参数作⽤⼀样,⽽且上图的说明⾥指出如果是⽤gpu进⾏运算的话该参数⽆效。
  接下来,我们看⼀下⾥给出的例⼦:
tubikimport torch
from torch_cluster import knn_graph
x = sor([[-1.,-1.],[-1.,1.],[1.,-1.],[1.,1.]])
感生电动势
batch = sor([0,0,0,0])
edge_index = knn_graph(x, k=2, batch=batch, loop=False)
print(edge_index)
>>>tensor([[1,2,0,3,0,3,1,2],
a管理模式[0,0,1,1,2,2,3,3]])
  从结果中,我们可以看出,输出结果为⼀个⼆维数组,形状为[2, N*k]。在flow参数默认为source_to_target的情况下,中⼼节点的位置在后。

本文发布于:2024-09-21 13:32:15,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/326217.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:节点   参数   函数   邻居   猜测
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议