gpt4 book ai didi

python - 访问内部张量并向 tflite 模型添加新节点?

转载 作者:行者123 更新时间:2023-12-01 08:51:19 27 4
gpt4 key购买 nike

我对 TensorFlow 和 TensorFlow Lite 相当陌生。我已遵循有关如何使用 toco 量化模型并将模型转换为定点计算的教程。现在我有一个 tflite 文件,它应该只执行定点操作。我有两个问题

  1. 如何在 python 中测试它?如何访问 tflite 文件中的所有操作和结果?
  2. 有没有办法在此 tflite 文件中添加新节点或操作?如果是这样怎么办?

如果有人能指导我,我将非常感激。

感谢和问候,
阿比纳夫·乔治

最佳答案

Is there a way to add a new node or operation in this tflite file? If so how?

不幸的是,,这实际上是一件好事。 TF-Lite 的设计极其轻巧但高效,使用映射文件、 FlatBuffers 、静态执行计划等来减少内存占用。这样做的代价是您失去了 TensorFlow 的任何灵 active 。

TF-Lite 是一个部署框架。然而,早些时候 Google IO ,TF 团队提到了设备上训练的可能性,所以也许将来会提供某种灵 active ,但现在还不行。

<小时/>

How do I test this in python? How do i access all the operations and results in the tflite file?

无法访问所有内部操作,只能访问输入和输出。原因很简单:内部张量不会被保存,因为它们的内存部分也用于其他操作(这就是为什么它的内存占用如此低)。

如果您只想查看输出,可以使用如下 Python API(代码不言自明):

import pprint
from tensorflow.contrib.lite.python import interpreter as interpreter_wrapper

# Load the model and allocate the static memory plan
interpreter = interpreter_wrapper.Interpreter(model_path='model.tflite')
interpreter.allocate_tensors()

# print out the input details
input_details = interpreter.get_input_details()
print('input_details:')
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(input_details)

# print out the output details
output_details = interpreter.get_output_details()
print('output_details:')
pp = pprint.PrettyPrinter(indent=2)
pp.pprint(output_details)

# set input (img is a `numpy array`)
interpreter.set_tensor(input_details[0]['index'], img)

# forward pass
interpreter.invoke()

# get output of the network
output = interpreter.get_tensor(output_details[0]['index'])
<小时/>

What if I call interpreter.get_tensor for non-input and non-output tensors?

执行相应操作后,您将不会获得该张量中包含的实际数据。如前所述,张量的内存部分与其他张量共享,以实现最大效率。

关于python - 访问内部张量并向 tflite 模型添加新节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53104887/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com