使用Keras在Tensorflow 2.0中处理负采样的最佳方法

Tensorflow发布了在TF 2.0 Keras中实现word2vec的官方指南

https://www.tensorflow.org/tutorials/text/word_embeddings

但是,它缺少负采样,这在word2vec中非常重要,这很不幸,因为原始的张量流具有一些出色的候选采样功能。

我对方法的最佳猜测是扩充模型,

model = keras.Sequential([
  layers.Embedding(encoder.vocab_size,embedding_dim),layers.GlobalAveragePooling1D(),layers.Dense(1,activation='sigmoid')
])

也许使用功能性API而不是顺序性API。

我看到c ++ TF 2.0具有候选采样操作https://www.tensorflow.org/api_docs/cc/group/candidate-sampling-ops

这些可以合并到Keras中吗?

haixiakeji 回答:使用Keras在Tensorflow 2.0中处理负采样的最佳方法

Negative Sampling 是一种技术,其中不在Context中的值仅对其中的少量值进行采样,而不是减少其{{1 }}。

因此,在我们的实现中,我们使用“ Sigmoid”而不是“ Softmax”的激活。因此,对于Weights中的单词,我们希望Context的{​​{1}} NetworkOutput对于{{1}中的单词}}。

是的,您的观察是正确的,我们需要使用1而不是0

Context中实现 Functional API 的代码如下所示:

Sequential API

有关更多信息,请参阅此Awesome Article

希望这会有所帮助。学习愉快!

本文链接:https://www.f2er.com/3126740.html

大家都在问