我正在使用tensorflow-hub上提供的新模块(我非常喜欢 - 感谢你的。)
我不清楚的是,在喂食句子时应该进行预处理。模块documentation表示,在预处理步骤中,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))
如何获取每个单词的嵌入,以及单个向量代表什么?句子的固定维度表示, Unknown-Word 嵌入还是别的什么?
提前致谢!
编辑:结果似乎是使用tf.nn.embedding_lookup_sparse
创建的组合嵌入。 (感谢您对@svsgoogle的确认)
答案 0 :(得分:2)
是的,输出表示整个句子的固定维度表示。
你也可以嵌入单个单词来获取它们的向量。在你的情况下:
embeddings = embed({"default": ["Cat", "sat", "on", "mat"]})
应该给你一个形状的结果(4,128)。