Python 访问内部张量并向tflite模型添加新节点?
我对TensorFlow和TensorFlow Lite相当陌生。我已经学习了如何使用Python 访问内部张量并向tflite模型添加新节点?,python,tensorflow,tensorflow-lite,Python,Tensorflow,Tensorflow Lite,我对TensorFlow和TensorFlow Lite相当陌生。我已经学习了如何使用toco对模型进行量化并将其转换为定点计算的教程。现在我有了一个tflite文件,它应该只执行定点操作。我有两个问题 如何在python中测试这一点?如何访问tflite文件中的所有操作和结果 是否有方法在此tflite文件中添加新节点或操作?如果是,怎么做 如果有人能指导我,我将不胜感激 感谢和问候, 阿比纳夫·乔治 是否有方法在此tflite文件中添加新节点或操作?如果是,怎么做 不幸的是,不,这实际上是一
toco
对模型进行量化并将其转换为定点计算的教程。现在我有了一个tflite
文件,它应该只执行定点操作。我有两个问题
阿比纳夫·乔治 是否有方法在此tflite文件中添加新节点或操作?如果是,怎么做 不幸的是,不,这实际上是一件好事。TF-Lite的设计非常轻巧而有效,它使用映射文件、平面缓冲区、静态执行计划等来减少内存占用。这样做的代价是你失去了TensorFlow的灵活性 TF Lite是一个部署框架。然而,早些时候,TF团队提到了设备训练的可能性,因此未来可能会有某种灵活性,但不是现在
如何在python中测试这一点?如何访问tflite文件中的所有操作和结果 您不能访问所有内部操作,只能访问输入和输出。原因很简单:内部张量不会被保存,因为它们的内存部分也用于其他操作(这就是为什么它的内存占用如此之低) 如果您只想查看输出,可以使用Python API,如下所示(代码不言自明):
导入pprint
从tensorflow.contrib.lite.python导入解释器作为解释器包装
#加载模型并分配静态内存计划
解释器=解释器\u包装器.解释器(model\u path='model.tflite')
解释器。分配_张量()
#打印出输入的详细信息
input\u details=解释器。获取\u input\u details()
打印('input_details:')
pp=pprint.预印机(缩进=2)
pp.pprint(输入详细信息)
#打印输出详细信息
output\u details=解释器。获取\u output\u details()
打印('output_details:')
pp=pprint.预印机(缩进=2)
pp.pprint(输出详细信息)
#设置输入(img是一个“numpy数组”)
解释器.设置张量(输入详细信息[0]['index'],img)
#前传
invoke()解释器
#获取网络的输出
输出=解释器。获取张量(输出详细信息[0]['index'])
如果我调用
解释器。获取非输入和非输出张量的_tensor
在执行相应的操作后,您将无法获得该张量中包含的实际数据。如前所述,为了获得最大效率,张量的内存部分与其他张量共享 您好,非常感谢您指出这一点。我想完全量化我的图形,这样它只执行定点操作,并想操纵少数操作的结果。您是否知道在tensorflow中还有其他方法可以执行此操作?如果您想监视少量特定操作,可以将它们添加到
输出中(TF Lite支持具有多个输出的模型)是,我的想法是一样的,但我只能监视它们,不能操纵它们并将其反馈到模型中,对吗?@AbhinavGeorge是的,但你可以做一个小改动:将模型分成几个部分(每个部分将转换为一个单独的*.tflite
文件),这样你就可以获取内部张量,对它们进行一些操作,并进一步喂养它们。我把一个多任务模型压缩到设备上时也做了同样的事情,在这个设备上,执行什么路径的决定取决于模型的其他输出。