ValueError:`ConcreteFunction`的所有输入必须为张量

时间:2019-10-17 09:59:37

标签: python tensorflow keras

我正在尝试以下通用代码编码器示例:

sentences_list = [
# phone related
'My phone is slow',
'My phone is not good',
'I need to change my phone. It does not work well',
'How is your phone?',

# age related
'What is your age?',
'How old are you?',
'I am 10 years old',

# weather related
'It is raining today',
'Would it be sunny tomorrow?',
'The summers are here.'

]

with tf.Session() as session:

    session.run([tf.global_variables_initializer(), 
    tf.tables_initializer()])
    sentences_embeddings = session.run(embed.signatures['default'] (sentences_list))

但是得到错误:

  

ValueError:ConcreteFunction的所有输入必须为张量;调用修剪后,第0个输入([“我的手机速度慢”,“我的手机不好”,“我需要更换手机。它无法正常工作”,“你的手机怎么样?”, “你几岁?”,“你几岁?”,“我10岁”,“今天在下雨”,“明天会晴天吗?”,“夏天在这里。”])不是张量。

2 个答案:

答案 0 :(得分:0)

它表示您显然正在传递不是tensot的变量。您缺少的是句子_list应该通过tf.constant或tf.placeholder传递,这取决于您要如何使用它。

对于tf.constant使用: x = tf.constant(sentences_list)

并将x传递给embed.signatures ['default']

答案 1 :(得分:0)

由于tensorflow仅与Tensors一起使用,因此它不会接受python列表作为输入,并且正如错误还指出的那样,您需要将列表转换为Tensor然后再馈入它。

您可以做的是将列表定义为numpy数组,例如

np_list = np.asarray(sentence_list),然后使用

将其转换为张量

tensor_list = tf.convert_to_tensor(np_list)

np.asarrayconvert_to_tensor上了解有关它们的更多信息