Multi-Component-Graph-Convolutional-Collaborative-Filtering
Multi-Component-Graph-Convolutional-Collaborative-Filtering copied to clipboard
aggregator中聚合邻居特征的问题
您好,关于代码实现方面我有一点小问题,aggregator的forward函数中,返回的nodes_fea是一个batch中所有的user节点的特征,但是在计算user与该user连接的item的注意力权重时又单独的计算了一次该user的特征,这时,这个user的特征与nodes_fea中对应的这个user的特征是不同的,为什么不直接取nodes_fea中的这个user的节点特征?
如果我理解没有错误,你的疑问出现在aggregator.py中第40和第77行的计算上。
模型后续需要用到batch中所有user的投影后特征(即经过self.u_layer投影至某一component空间),为方便后续计算,我们在第40行直接取出该batch中所有user的投影后特征并保存为nodes_fea。 第50~85行,针对该batch中每个user,计算其与相连item的attention weight。我们选择利用该user的原始index,自self.u_layer中取出投影后特征,当然也可以利用循环变量i自nodes_fea中取出相应特征。由于这两种方式均取自该aggregator的self.u_layer,本质并无差别,只是实现方式不同。
噢,非常感谢,嗯对确实是第40行和77行,我提问时忘记写了抱歉。 也就是说虽然两次的投影特征不完全相同,但是分布都是一样的,所以对后续计算component-Level Attention时的影响不大,可以这样理解吗?