我在执行nlp任务时遇到了性能问题。我想使用this模块进行单词嵌入,它会产生输出,但是每次迭代调用时它的运行时间都会增加。我已经阅读过有关不同解决方案的信息,但我无法使它们正常工作。我怀疑使用tf.placeholders是一个很好的解决方案,但是我不知道如何在这种情况下使用它们。

我的问题的示例代码:

embedder = hub.Module("https://tfhub.dev/google/nnlm-en-dim128-with-normalization/1")
session = tf.Session()
session.run(tf.global_variables_initializer())
session.run(tf.tables_initializer())

doc = [["Example1", "Example2", "Example3", "Example4", ...], [...], ...]

for paragraph in doc:
   vectors = session.run(embedder(paragraph))
   #do something with vectors


请注意,该文档无法一次全部馈送到嵌入器。

先感谢您。

最佳答案

您将在每次迭代中重新创建整个模型,因此TensorFlow图会不断增长。相反,您应该使用一个带有占位符的单一模型作为输入,然后输入不同的段落。

embedder = hub.Module("https://tfhub.dev/google/nnlm-en-dim128-with-normalization/1")
session = tf.Session()
session.run(tf.global_variables_initializer())
session.run(tf.tables_initializer())

doc = [["Example1", "Example2", "Example3", "Example4", ...], [...], ...]

my_input = tf.placeholder(tf.string, [None])
my_embedder = embedder(my_input)
for paragraph in doc:
   vectors = session.run(my_embedder, feed_dict={my_input: paragraph})
   #do something with vectors

关于python - 调用tf.session.run变慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57672444/

10-12 21:53