tensorflow 在TFLite Python中运行智能回复模型

mi7gmzs6  于 2022-10-29  发布在  Python
关注(0)|答案(5)|浏览(179)

我正在用Python测试Smart Reply Lite模型,我用Bazel编译了TFLite,并在fantastic tutorial的帮助下使用运行该模型所需的自定义操作(normalize.cc,predict.cc,extract_features.cc),现在我正在尝试运行推理。
下面是我使用的代码:

import tensorflow as tf
    import numpy as np
    tflite_interpreter = tf.lite.Interpreter(model_path='smartreply.tflite')

    tflite_interpreter.allocate_tensors()
    input_details = tflite_interpreter.get_input_details()
    output_details = tflite_interpreter.get_output_details()

    # print(input_details)
    # print(output_details)

    tflite_interpreter.set_tensor(input_details[0]['index'], 'Where are you?')
    # Run inference
    tflite_interpreter.invoke()
    # Get prediction results
    tflite_model_predictions = tflite_interpreter.get_tensor(output_details[0])
    print("Prediction results shape:", tflite_model_predictions)

在这样做的过程中,我得到了以下错误:

Traceback (most recent call last):
  File "run.py", line 12, in <module>
    tflite_interpreter.set_tensor(input_details[0]['index'], 'Where are you?')
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tensorflow/lite/python/interpreter.py", line 175, in set_tensor
    self._interpreter.SetTensor(tensor_index, value)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/tensorflow/lite/python/interpreter_wrapper/tensorflow_wrap_interpreter_wrapper.py", line 136, in SetTensor
    return _tensorflow_wrap_interpreter_wrapper.InterpreterWrapper_SetTensor(self, i, value)
ValueError: numpy array had 56 bytes but expected 0 bytes.

在调用tflite_interpreter.allocate_tensors()之前,我尝试用下面这行代码调整Tensor的大小:

tflite_interpreter.resize_tensor_input(0, [56])

同样的,如果我试图把Tensor的形状改变成[1,56],它仍然会失败,并产生同样的错误。
我的理解是,字符串被转换为numpy数组(根据模型描述,输入类型是int 32-每个字符4个字节)。
我需要对此输入法进行哪些更改才能运行此模型?

uajslkp6

uajslkp61#

嗨,我想知道这方面有什么进展吗?

nfg76nw0

nfg76nw02#

@videetparekh你能让它在python中工作吗?

lp0sw83n

lp0sw83n3#

不,抱歉。没有得到Google团队的支持。

rlcwz9us

rlcwz9us4#

@videetparekh你是如何在js/python中实现这个特性的?
我看到了一个非官方的端口,但对我不起作用。从头开始构建不是很有效率。

5q4ezhmt

5q4ezhmt5#

耶!我也可以在2.8版本中复制这个问题。谢谢!

相关问题