ComiRec
ComiRec copied to clipboard
Source code and dataset for KDD 2020 paper "Controllable Multi-Interest Framework for Recommendation"
作者虽然在前面issue中回答过:stop the backward propagation gradient from capsule weights to item embedding,但是还想进一步了解一下,1)这里只是停止了前N-1次迭代时的梯度,最后一次迭代还是开放了梯度,那应该没法完全防止梯度传播到item embedding吧,不知道是否理解有误?2)而且代码是将映射矩阵w乘item Embedding后才停止的梯度,映射矩阵w肯定是要更新的,那怎么防止w更新而item Embedding不更新呢?3)即便真的防止了梯度传播到item embedding,为什么要防止呢?只有item embedding是现成的才不用更新吧,如果场景是需要端到端学习来同步得到item embedding,代码中stop Gradient是不是就不需要了?
大佬你好! 我在尝试用我们公司的数据复现论文,我用的item有2千万多个,所以我重新编码item_id之后最大的item_id长度有8位数,这种情况下train出来的item_embedding各个维度都为0。想请教一下我哪里处理的不对嘛?
模型问题
Hi, 请问ComiRec-DR和MIND的具体区别在哪里呢?根据代码中./src/model.py的188-208行,是否可以认为两个算法的区别在于bilinear_type设置的不同?具体就是bilinear的映射方式不同、以及capsule_weight初始化不同,一共有这两处区别。 恳请解答,感谢。
I ran MIND 5 times on amazon, and the end result is not ideal. my running cmd is `python3 -u ./src/train.py --model_type MIND 2>&1 | tee MIND` The summary of...
作者您好,我看您的代码,在多向量建模部分,在训练的时候,user_eb是先和item_eb做了交互之后(即做了attention),再和mid_batch_ph,也就是next item做交叉熵loss,这样子不会泄漏信息吗? 也就是说,在与next item做loss前就已经和next item做过交互了,通过next item来确定多向量的权重,再和next item做loss,这样做感觉不是很合理?
How to save model for predicting. I do the follow: ` def save_user_model(self, sess, path): builder = tf.compat.v1.saved_model.Builder(path) sig_def = tf.compat.v1.saved_model.predict_signature_def( inputs={'mid_his_batch_ph': self.mid_his_batch_ph, 'mask': self.mask}, outputs={'output': self.user_eb} ) builder.add_meta_graph_and_variables( sess,...
In your preprocess code, item new remap id start from 1, and 0 for padding item id. But in train.evaluate_full function, `D, I = gpu_index.search(user_embs, topN)`, `I` may contains 0,...
I implemented the MostPopular method myself and tested it on your dataset. On Amazon book, I have the same result as you. On Taobao, I have the same HitRate result...
达不到论文效果
我直接下载代码和数据,运行了readme.md 中的指令 `python src/train.py --dataset book --model_type ComiRec-SA`, 得到的效果为 ``` valid recall: 0.082050, valid ndcg: 0.128702, valid hitrate: 0.163897, valid diversity: 0.220184 test recall: 0.080504, test ndcg: 0.127190, test hitrate:...
大佬您好,以我个人的理解,发现源代码中,以0作为#PAD的替代,那么这样一来在sampled_softmax_loss中会出现以最大的概率取0作为neg_sample的情况,而0并不是真实的item,这样一来是否有些不合理呢?不知道我的理解有没有错误,望指正!