Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 访问内部张量并向tflite模型添加新节点?_Python_Tensorflow_Tensorflow Lite - Fatal编程技术网

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

Python 访问内部张量并向tflite模型添加新节点?,python,tensorflow,tensorflow-lite,Python,Tensorflow,Tensorflow Lite,我对TensorFlow和TensorFlow Lite相当陌生。我已经学习了如何使用toco对模型进行量化并将其转换为定点计算的教程。现在我有了一个tflite文件,它应该只执行定点操作。我有两个问题 如何在python中测试这一点?如何访问tflite文件中的所有操作和结果 是否有方法在此tflite文件中添加新节点或操作?如果是,怎么做 如果有人能指导我,我将不胜感激 感谢和问候, 阿比纳夫·乔治 是否有方法在此tflite文件中添加新节点或操作?如果是,怎么做 不幸的是,不,这实际上是一

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

  • 如何在python中测试这一点?如何访问tflite文件中的所有操作和结果
  • 是否有方法在此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
    文件),这样你就可以获取内部张量,对它们进行一些操作,并进一步喂养它们。我把一个多任务模型压缩到设备上时也做了同样的事情,在这个设备上,执行什么路径的决定取决于模型的其他输出。