alibaba / euler

A distributed graph deep learning framework.
Apache License 2.0
2.89k stars 559 forks source link

子图采样的时候为什么将每一层的源节点拼接? #336

Closed ystephenai closed 2 years ago

ystephenai commented 2 years ago

在message passing例子中的代码看到 GCNDataflow 这个文件中

new_n_id = tf.reshape(one_neighbor.values, [-1]) n_id = tf.concat([new_n_id, n_id], axis=0) <== 这里不太明白为什么要拼接n_id? nid, = tf.unique(n_id)

我想的是这里的逻辑是 new_n_id 是根据 n_id 采样出来的,但是在下一层采样的时候是不是可以直接用new_n_id作为源节点就好了,为啥要和n_id拼接之后再作为源节点呢?如果拼接的话,最后一层采样的邻居不就包含了从第二层的邻居到最后一层的所有邻居节点吗?

提前谢谢作者解答!

ystephenai commented 2 years ago

明白了 是我自己想错了