update_all_fun(send recv)
'''
Send messages through all edges >>> update all nodes.
DGLGraph.update_all(message_func='default', reduce_func='default', apply_node_func='default') message_func --message function on the edges
reduce_func--reduce function on the node
apply_node_func:apply function on the nodes
''' '''
DGLGraph.send(edges='__ALL__', message_func='default')
edges:
int:one edge using edge id
pair of int :one edge using its endpoints
int iterable/tensor :multiple edges using edge id
pair of int iterable/pair of tensor :multiple edges using their endpoints returns messages on the edges and can be later fetched in the destination node’s mailbox ''' '''
DGLGraph.recv(v='__ALL__', reduce_func='default', apply_node_func='default', inplace=False) '''
import warnings
warnings.filterwarnings("ignore")
import torch as th
import dgl
g=dgl.DGLGraph() g.add_nodes(3)
g.ndata["x"]=th.tensor([[5.],[6.],[7.]])
g.add_edges([0,1],[1,2])
src=th.tensor([0])
dst=th.tensor([2])
g.add_edges(src,dst)
print("ndata",g.ndata["x"]) def send_source(edges): print("src",edges.src["x"].shape,edges.src["x"]) #源节点特征 ([2, 1])
print("dst",edges.dst["x"].shape,edges.dst["x"]) #目标节点特征 ([2, 1]) return {"m":edges.src["x"]} g.register_message_func(send_source) '''
ndata tensor([[5.],
[6.],
[7.]])
src torch.Size([3, 1]) tensor([[5.],
[6.],
[5.]])
dst torch.Size([3, 1]) tensor([[6.],
[7.],
[7.]]) ''' def simple_reduce(nodes):
print("data_nodes",nodes.data["x"]) #节点特征
print("mailbox",nodes.mailbox["m"].shape,nodes.mailbox["m"]) #mailbox包含沿第二维堆叠的所有传入message特征 [2, 1, 1]
print("sum",nodes.mailbox["m"].sum(1)) return {"x":nodes.mailbox["m"].sum(1)} #按行求和 g.register_reduce_func(simple_reduce) g.send(g.edges())
g.recv(g.nodes())
print("ndata",g.ndata["x"]) ''' data_nodes tensor([[6.]])
mailbox torch.Size([1, 1, 1]) tensor([[[5.]]])
sum tensor([[5.]])
data_nodes tensor([[7.]])
mailbox torch.Size([1, 2, 1]) tensor([[[6.],
[5.]]])
sum tensor([[11.]])
ndata tensor([[ 0.],
[ 5.],
[11.]]) '''
update_all_fun(send recv)的更多相关文章
- easyHOOK socket send recv
代码比较简单,就不做注释了. 包含一个sockethookinject.DLL 和sockethook.exe 有一点不清楚, SetExclusiveACL可以添加当前线程的hook, 但是eas ...
- 套接字I/O函数write/read writev/readv send/recv sendto/recvfrom sendmsg/recvmsg
函数原型 read/write系原型 #include <unistd.h> ssize_t read(int fd, void *buf, size_t count); #include ...
- send+recv注意事项
[TOC] send 函数原型 ssize_t send( SOCKET s, const char *buf, size_t len, int flags ) 注意事项 待发送数据长度data_le ...
- linux socket下send()&recv()调用
1.send 函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP ...
- 一文彻底搞通TCP之send & recv原理
接触过网络开发的人,大抵都知道,上层应用使用send函数发送数据,使用recv来接收数据,而send和recv的实现原理又是怎样的呢? 在前面的几篇文章中,我们有提过,TCP是个可靠的.全双工协议.其 ...
- UNIX网络编程-recv、send、read、write之间的联系与区别
1.read ----------------------------------------------------------------------- #include <unistd.h ...
- VC++ 用setsockopt()来控制recv()与send()的超时
在send(),recv()过程中有时由于网络状况等原因,收发不能预期进行,而设置收发超时控制: 以下是来自于网上一篇文章中的摘录,它是这样写的: ;//1秒, //设置发送超时 setsockopt ...
- setsockopt()用法(参数详细说明) recv、send的超时处理
源于recv send 阻塞和非阻塞 int setsockopt(SOCKET s,int level,int optname,const char* optval,int optlen); s(套 ...
- socket函数send和recv函数
转自:http://www.cppblog.com/aaxron/archive/2012/04/27/172891.html 在发送端,一次发送4092个字节,在接收端,一次接收4092个字节,但是 ...
随机推荐
- JavaScript 事件不触发
在class上绑定的事件,点击图片的时候无法触发 <div id="files" class="files"> <div> <p& ...
- P1309 瑞士轮 (吸氧了)
P1309 瑞士轮 题解 1.这题可以模拟一下 2.sort吸氧可以过(可能是排序有点慢吧,不开会T) sort排序时注意: return 1 是满足条件,不交换 return 0是不满足,交换 代码 ...
- Jmeter之HTTP常用配置元件(默认、头信息和cookies)
在进行HTTP接口的测试时,会用到部分常用的配置元件,现在简单的说明: 一.HTTP请求默认值 在测试同一个项目的HTTP请求接口时,会存在部分相同的信息,可以将这些相同的信息提取出来,使用HTTP请 ...
- C# 程序异常停止后,sqlite可能变成0kb……
解决办法就是即时备份数据库文件,启动时判断数据库文件是否为0kb,是则还原之
- java jna 调用windows动态链接库
import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.Platform; import com.sun.j ...
- 001-Django简介与项目创建
简介 django,是用python语言写的开源web开发框架,并遵循MVC设计 主要目的是简便.快速的开发数据库驱动的网站 强调代码复用,有很多第三方插件,强调快速开发和DRY(DoNotRepea ...
- JDK,JRE,JVM的区别与联系?
概念区别 JDK: Java Develpment Kit java 开发工具JRE: Java Runtime Environment java运行时环境JVM: ...
- yum安装php7
1.安装epel源 yum -y install epel-release yum -y install http://dl.fedoraproject.org/pub/epel/epel-relea ...
- HTTP 常见相应状态码及含义
1xx:信息 100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求. 101 Switching Protocols 服务器转换协议:服务器将 ...
- JSP总结(jsp/EL表达式/核心标签)
1.概念 jsp,即java Server Pages,java服务器页面. 2.简单介绍 小示例 <%@ page language="java" contentType= ...