文章目录

  • 前言
  • torch_geometric.utils.softmax
  • torch_scatter.scatter

前言

其实个人不是很建议学习这些关于图深度学习的库,我之前还用过另外一个库DGL,也是五花八门的快速实现一个GNN,但是我的感觉是还不如自己写。用他们的API是非常头疼的,有的没有官方文档。本文并不是我自己决定学习这个库而写出来的,而是因为别人的代码用了,但我不知道什么意思,所以看了一下,顺便记录下来。反正个人不推荐使用。

torch_geometric.utils.softmax

from torch_geometric.utils import softmax

这个东西和通常的softmax不一样,其会多接受一个参数,然后相同的元素之间进行softmax。例如我需要softmax[1,2,1],并提供了另外一个参数[3,4,3],那么其就会把3的进行内部softmax,4的进行内部softmax,从而[1,2,1]变成[0.5,1,0.5]。

如下:

al=torch.tensor([[1],[2],[1]])#shape[3,1]
a=torch.tensor([3,4,3])#shape[3]
softmax(al,a)#shape[3,1]

tensor([[0.5000],
[1.0000],
[0.5000]])

解释:为什么是[3,1]而不是[3],这是因为通常我们都会有多头的注意力,此时可能就会是[3,num_heads],那么其会逐头进行softmax。

torch_scatter.scatter

from torch_scatter import scatter

这个东西和上面这个思想有点类似,也是需要指定主参数(矩阵),然后额外参数。其根据这个额外参数,指定我们的主参数的哪几行是属于同一个东西的。

#主参数
a=torch.randint(0,2,(2,1,3))
a

tensor([[[1, 0, 0]],
[[0, 1, 1]]])

scatter(a,torch.tensor([1,1]),dim=0,reduce="sum")

然后torch.tensor([1,1])以及dim=0表示,a的第一行和第二行都是属于同一个东西的。然后reduce="sum"表示把同一行的东西加起来。

返回的东西比较有意思,由于我们的额外参数没有0,只有1,那么0类东西就没有,返回的时候就会返回0,1类东西有两个,并且会相加。如下:

tensor([[[0, 0, 0]],
[[1, 1, 1]]])

同理,考考大家,下面这个输出什么?

scatter(a,torch.tensor([0,1]),dim=0,reduce="sum")

输出原样a对吧,其表示只有第一行属于0类,相加,自己加自己,放到输出第一行,同理。。。

torch_{geometric/scatter}中一些函数的用法(softmax,scatter)相关推荐

  1. 浅述numpy中argsort()函数的用法

    浅述python中argsort()函数的用法 由于想使用python用训练好的caffemodel来对很多图片进行批处理分类,学习过程中,碰到了argsort函数,因此去查了相关文献,也自己在pyt ...

  2. C++中substr函数的用法

    C++中substr函数的用法 #include<string> #include<iostream> using namespace std; main() { string ...

  3. numpy中where函数的用法

    numpy中where函数的用法 numpy.where(condition,x,y)--若满足condition,输出x,否则输出y. 举例: 例1:一维数组 >>> a = np ...

  4. delphi中move函数的用法

    delphi中move函数的用法 -------------------------------------------------------------------------------- 20 ...

  5. SQL中object_id函数的用法

    SQL中object_id函数的用法 收藏  int object_id('objectname'); 此方法返回数据库对象标识号. 其中,参数objectname 表示要使用的对象,其数据类型为nc ...

  6. python remove函数_python中remove函数的用法是什么?

    python中remove函数的用法是什么? python中remove函数的用法: 描述 remove() 函数用于移除列表中某个值的第一个匹配项. 语法 remove()方法语法: list.re ...

  7. Delphi中 StrToIntDef函数的用法

    Delphi中 StrToIntDef函数的用法: 比如我要判断一个文本框里输入的字符串能不能转换为integer类型,如果能,则返回转换后的整型数据,如果不能,则返回整数0,那么我就可以用strto ...

  8. python中int函数的用法浅析_Python中int()函数的用法浅析

    int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int) Help on class int in module __builtin__ ...

  9. python中sorted函数的用法_Python3 中sorted() 函数的用法

    描述 sorted() 函数对所有可迭代的对象进行排序操作. 语法 sorted(iterable, key=None, reverse=False) iterable – 可迭代对象. key – ...

最新文章

  1. Windows10 家庭版没有本地组策略解决方法
  2. gitlab升级-(一)安装一台旧版本
  3. LVM和raid结合使用
  4. 特征级融合_更丰富的卷积特征用于目标边缘检测(文末附有论文及源码下载)...
  5. Uipath 学习栏目基础教学:10、数据抓取
  6. UWP学习——Plan final project(线下版)
  7. KUKA profesafe
  8. Docker和Kubernetes如何让DevOps更具效力
  9. 第三只眼使用局域网版本还是网络版好_让汽车的“第三只眼”更聪明更安全
  10. 查询php copy函数源码,PHP copy函数使用案例代码解析
  11. Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
  12. ReadWriteLock读写锁的使用
  13. mysql存过游标_mysql存储过程 游标 循环使用介绍
  14. Webstorm汉化方法
  15. GD32F103ZKT6替换STM32F103调试手记
  16. 2021-2027全球与中国自动识别和数据采集设备市场现状及未来发展趋势
  17. .NetCore分布式部署中的DataProtection密钥安全性
  18. 定位篇align_measurements
  19. wait_proxies_to_terminate (../../../../../src/pm/i_hydra/mpiexec/intel/i_mpiexec.c:558): downstream
  20. One PUNCH Man——变量显著性检验

热门文章

  1. 中国数学界,无论怎样感谢哈代都不为过
  2. 这道「传说级」的数学题,为什么有 3 个正确答案?
  3. 都说过了,它跟蛇没关系
  4. 集成的分层强化学习,让人工智能在解决智能问题时表现得更聪明
  5. 音频数据建模全流程代码示例:通过讲话人的声音进行年龄预测
  6. 独家 | 基于癌症生存数据建立神经网络(附链接)
  7. 1183位求助者的数据画像:不是弱者,而是你我
  8. 《深度学习,统计学习,数学基础》人工智能算法工程师手册:程序员写的AI书,50 章一网打尽...
  9. 近期活动盘点:大咖云集,中国AI创新者论坛(3.21)
  10. MIT中国博士生开发出第一套保护自动驾驶车辆的感知算法