如何从tf张量获取Numpy数组?

时间:2019-06-26 05:03:12

标签: python tensorflow

当尝试从张量流张量获取一个numpy数组时遇到问题。我使用了一个tensorflow集线器模块,但是我不想在下游任务中使用tensorflow,而是需要一个numpy数组。

我知道我必须在张量流会话中在张量上调用'eval()'方法。但不幸的是,我无法使它正常工作... :(它告诉我“表未初始化”。我试图添加'sess.run(tf.tables_initializer())',但随后出现错误:'NotFoundError :资源localhost / module_1 / embeddings_morph_specialized / class tensorflow :: Var不存在'。我不确定接下来要尝试什么。我也尝试过'sess.run()',但也没有成功。

import numpy as np
import tensorflow as tf
import tensorflow_hub as hub

embed = hub.Module("https://public.ukp.informatik.tu-darmstadt.de/arxiv2018-xling-sentence-embeddings/tf-hub/monolingual/1")
X = embed(["This is a test."])

# I tried:
#with tf.Session() as sess:
#    sess.run(tf.tables_initializer())
#    X.eval()

'X'是我想转换为numpy数组的张量。

感谢您的帮助。 :) 谢谢。

1 个答案:

答案 0 :(得分:1)

不幸的是,tf_hub模块是not yet supported in eager mode,除了tf 2(仍处于beta版,我认为仍然需要稍微不同的集线器模块)。

因此,您需要在会话中运行它。

类似的东西:

embed = hub.Module("https://public.ukp.informatik.tu-darmstadt.de/arxiv2018-xling-sentence-embeddings/tf-hub/monolingual/1")
X = embed(["This is a test."])

with tf.Session() as session:
  session.run([tf.global_variables_initializer(), tf.tables_initializer()])
  numpy_arr = session.run(X)