我正在玩新的模块,这是可用的tensorflow-集线器(我真的很喜欢-为此感谢)。
对我来说不清楚的是,在提供句子时应该进行的预处理。模块文档说,在预处理步骤中,inputj语句在空格处被分割。
然而,当我运行以下程序时,我只得到一个向量:
with tf.device("/cpu:0"):
embed = hub.Module("https://tfhub.dev/google/nnlm-en-dim128/1")
global_step1 = tf.train.get_or_create_global_step()
with tf.device("/cpu:0"):
embeddings = embed({"default": ["Cat sat on mat"]})
with tf.train.MonitoredTrainingSession(is_chief=True) as sess:
message_embeddings_cat = sess.run(embeddings)
print(message_embeddings_cat.shape) # (result: (1, 128))如何获得每个单词的嵌入,以及单个向量代表什么?句子的固定维表示,未知词的嵌入还是其他什么?
提前感谢!
编辑:结果似乎是用tf.nn.embedding_lookup_sparse创建的组合嵌入。(谢谢确认@svsgoogle)
发布于 2018-04-30 08:13:24
是的,输出表示整个句子的固定维表示.
您还可以嵌入单个单词来获取它们的向量。就你而言:
embeddings = embed({"default": ["Cat", "sat", "on", "mat"]})应该给你一个与形状(4,128)的结果。
https://stackoverflow.com/questions/50078749
复制相似问题