torch_{geometric/scatter}中一些函数的用法(softmax,scatter)
文章目录
- 前言
- 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)相关推荐
- 浅述numpy中argsort()函数的用法
浅述python中argsort()函数的用法 由于想使用python用训练好的caffemodel来对很多图片进行批处理分类,学习过程中,碰到了argsort函数,因此去查了相关文献,也自己在pyt ...
- C++中substr函数的用法
C++中substr函数的用法 #include<string> #include<iostream> using namespace std; main() { string ...
- numpy中where函数的用法
numpy中where函数的用法 numpy.where(condition,x,y)--若满足condition,输出x,否则输出y. 举例: 例1:一维数组 >>> a = np ...
- delphi中move函数的用法
delphi中move函数的用法 -------------------------------------------------------------------------------- 20 ...
- SQL中object_id函数的用法
SQL中object_id函数的用法 收藏 int object_id('objectname'); 此方法返回数据库对象标识号. 其中,参数objectname 表示要使用的对象,其数据类型为nc ...
- python remove函数_python中remove函数的用法是什么?
python中remove函数的用法是什么? python中remove函数的用法: 描述 remove() 函数用于移除列表中某个值的第一个匹配项. 语法 remove()方法语法: list.re ...
- Delphi中 StrToIntDef函数的用法
Delphi中 StrToIntDef函数的用法: 比如我要判断一个文本框里输入的字符串能不能转换为integer类型,如果能,则返回转换后的整型数据,如果不能,则返回整数0,那么我就可以用strto ...
- python中int函数的用法浅析_Python中int()函数的用法浅析
int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int) Help on class int in module __builtin__ ...
- python中sorted函数的用法_Python3 中sorted() 函数的用法
描述 sorted() 函数对所有可迭代的对象进行排序操作. 语法 sorted(iterable, key=None, reverse=False) iterable – 可迭代对象. key – ...
最新文章
- Windows10 家庭版没有本地组策略解决方法
- gitlab升级-(一)安装一台旧版本
- LVM和raid结合使用
- 特征级融合_更丰富的卷积特征用于目标边缘检测(文末附有论文及源码下载)...
- Uipath 学习栏目基础教学:10、数据抓取
- UWP学习——Plan final project(线下版)
- KUKA profesafe
- Docker和Kubernetes如何让DevOps更具效力
- 第三只眼使用局域网版本还是网络版好_让汽车的“第三只眼”更聪明更安全
- 查询php copy函数源码,PHP copy函数使用案例代码解析
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
- ReadWriteLock读写锁的使用
- mysql存过游标_mysql存储过程 游标 循环使用介绍
- Webstorm汉化方法
- GD32F103ZKT6替换STM32F103调试手记
- 2021-2027全球与中国自动识别和数据采集设备市场现状及未来发展趋势
- .NetCore分布式部署中的DataProtection密钥安全性
- 定位篇align_measurements
- wait_proxies_to_terminate (../../../../../src/pm/i_hydra/mpiexec/intel/i_mpiexec.c:558): downstream
- One PUNCH Man——变量显著性检验
热门文章
- 中国数学界,无论怎样感谢哈代都不为过
- 这道「传说级」的数学题,为什么有 3 个正确答案?
- 都说过了,它跟蛇没关系
- 集成的分层强化学习,让人工智能在解决智能问题时表现得更聪明
- 音频数据建模全流程代码示例:通过讲话人的声音进行年龄预测
- 独家 | 基于癌症生存数据建立神经网络(附链接)
- 1183位求助者的数据画像:不是弱者,而是你我
- 《深度学习,统计学习,数学基础》人工智能算法工程师手册:程序员写的AI书,50 章一网打尽...
- 近期活动盘点:大咖云集,中国AI创新者论坛(3.21)
- MIT中国博士生开发出第一套保护自动驾驶车辆的感知算法