在“双塔”模型中使用采样的 softmax 速度很慢

问题描述

我正在尝试实现类似“双塔”的推荐模型,如论文“针对大型语料库项目推荐的采样-偏差-校正神经建模”中所述。它提到使用“批量 softmax”来学习嵌入。我认为这个'in batch softmax'很可能是word2vec中使用的'sampled softmax'。所以我尝试使用 tf.nn.nce_loss 来实现这个逻辑。我写了一些代码尝试训练一个简单的模型。

添加了 colab 链接 https://colab.research.google.com/drive/11prB0qNvxXAiE-zzD9TtBn4OS8ozVeY_?usp=sharing

range query

我发现训练真的很慢。我怀疑是因为每次tensorflow都需要计算right_hidden = tf.layers.dense(right_embedding,dense_size,activation='relu'),而采样的softmax只适用于最后一个矩阵“right_hidden”,但我们还是需要预先计算整个 right_hidden 矩阵。所以我说得对吗?或者任何人都可以提供更好的解决方案来处理“采样 softmax”或“批量 softmax”。谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)