如何解决在实现skipgram模型中如何在张量流中采用两个嵌入的点积
我正在尝试在Tensorflow 2.3中实现skip-gram模型 可以请人确认我的实现是否良好,或者模型是否存在缺陷?
import tensorflow as tf
class word2vec_tf(tf.keras.Model):
def __init__(self,embedding_size,vocab_size,noise_dist = None,negative_samples = 10):
super(MyModel,self).__init__()
self.embeddings_input = tf.keras.layers.Embedding(vocab_size,embeddings_initializer='uniform',mask_zero=False)
self.embeddings_context = tf.keras.layers.Embedding(vocab_size,mask_zero=False)
self.vocab_size = vocab_size
self.negative_samples = negative_samples
self.noise_dist = noise_dist
def call(self,input_word,context_word):
##### computing out loss #####
emb_input = self.embeddings_input(input_word) # bs,emb_dim
emb_context = self.embeddings_context(context_word) # bs,emb_dim
# POSITIVE SAMPLES
emb_product = tf.keras.layers.dot([emb_input,emb_context],axes=(1,1))# bs
out_loss = tf.squeeze(tf.math.log_sigmoid(emb_product),axis = 1)
return tf.reduce_mean(tf.math.negative(out_loss))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。