论文代码解读——SRGNN(Session-based Recommendation with Graph Neural Networks)

整体模型

论文代码解读——SRGNN(Session-based Recommendation with Graph Neural Networks)_第1张图片

数据处理

示例数据集:


论文代码解读——SRGNN(Session-based Recommendation with Graph Neural Networks)_第2张图片

主要有session_id,item_id,time
程序处理完数据后格式:
train.txt
[[session_id序列],[序列下一个session_id...]]


论文代码解读——SRGNN(Session-based Recommendation with Graph Neural Networks)_第3张图片

比如:
一个session_id中,根据时间顺序,用户点击了商品,1,2,3,4,5

就有序列([[1,2,3,4],[1,2,3],[1,2],[1]],[5,4,3,2])
test.txt
格式与train.txt相同
all_train_seq.txt
保存所有的session序列,只保存最长的那个

训练获得各个商品节点的embedding

论文代码解读——SRGNN(Session-based Recommendation with Graph Neural Networks)_第4张图片

获得最长的序列长度,对所有序列做补零操作


论文代码解读——SRGNN(Session-based Recommendation with Graph Neural Networks)_第5张图片

生成批数据
slices为序号,对最后一个序列做矫正


论文代码解读——SRGNN(Session-based Recommendation with Graph Neural Networks)_第6张图片

生成论文中的As矩阵
论文代码解读——SRGNN(Session-based Recommendation with Graph Neural Networks)_第7张图片

论文代码解读——SRGNN(Session-based Recommendation with Graph Neural Networks)_第8张图片

主要运用的即是GRU网络
输出得到各个item的embedding,shape为[self.batch_size, -1, self.out_size]
self.embedding是所有物品的向量,输出的只有batch_size中的物品向量

Sessing Embeddings构建

论文代码解读——SRGNN(Session-based Recommendation with Graph Neural Networks)_第9张图片

主要是一个Attention的使用


论文代码解读——SRGNN(Session-based Recommendation with Graph Neural Networks)_第10张图片

hybrid是进行拼接


训练

最后loss为两个loss相加
logits为n_node的数值大小,tar为真实数值,即真实下一个数
tf.nn.sparse_softmax_cross_entropy_with_logits()
传入的logits为神经网络输出层的输出,shape为[batch_size,num_classes],传入的label为一个一维的vector,长度等于batch_size,每一个值的取值区间必须是[0,num_classes),其实每一个值就是代表了batch中对应样本的类别。函数会进行softmax与one-hot操作。



测试为取出数值最大的前20.


论文代码解读——SRGNN(Session-based Recommendation with Graph Neural Networks)_第11张图片

总结

论文主要通过session_id、时间顺序来构建图谱,对图谱item进行embedding,随着迭代次数的增多,物品embedding表达会越来越好。通过item的embedding构建session的embedding,用到了Attention与拼接。模型最终是一次性预测后一个物品的概率。

你可能感兴趣的:(论文代码解读——SRGNN(Session-based Recommendation with Graph Neural Networks))