当前位置: 首页 > 知识库问答 >
问题:

如何调试TFlite转换?

干浩然
2023-03-14

我试图使用tensorflow lite-toco转换器来获得tflite图。我使用toco命令行来获取tflite图。在转换过程中,我没有收到任何错误,但是,我的转换似乎包含垃圾(输出为nans)。我想知道如何调试这个转换。

我做以下步骤:

>

  • 加载. ckpt文件并转换为frozen_graph:

    使用g.as_default(),g.device(device_t),\tf。Session(config=soft\u config)作为sess:batch\u shape=(batch\u size,)img\u shape img\u占位符=tf。占位符(tf.float32,shape=batch\u shape,name='img\u占位符')

    preds = transform(img_placeholder)
    
    saver = tf.train.Saver()
    saver.restore(sess, checkpoint_dir)
    frozen_graph_def = tf.graph_util.convert_variables_to_constants(sess,sess.graph_def,['transformer/up-sample/mul'])
    with open('frozeen_graph.pb', 'wb') as f:
        f.write(frozen_graph_def.SerializeToString())
    

    Quastion:上面的代码是eqevatent的脚本的用法tenstorflow/python/工具/freeze_graph.py?

    当我使用上面的代码时,我也通过laoding冻结图来检查冻结,并通过它传递输入图像,输出看起来不错。所以冷冻似乎起作用了。

    toco \--graph_def_file=frozeen_graph。pb\
    --输出文件=转换的图形。lite \--输入\格式=TENSORFLOW \ GRAPHDEF \--输出\格式=TFLITE \--输入\形状=1256256,3 \--输入\数组=img \ U占位符:0 \--输出\数组=转换器/上采样/多:0 \--推理\类型=浮点\--输入\数据\类型=浮点

    当我执行上面的行时,我没有得到任何错误。请注意,我更改了图形,以消除一些“不支持的操作”错误。

    接下来,我使用tenstorflow lite解释器来测试转换后的图形(使用python API):

    tflite_graph_filename = 'converted_graph.lite'
    # Load TFLite model and allocate tensors.
    interpreter = 
    tf.contrib.lite.Interpreter(model_path=tflite_graph_filename)
    interpreter.allocate_tensors()
    
    # Get input and output tensors.
    input_details = interpreter.get_input_details()
    output_details = interpreter.get_output_details()
    
    input_shape = input_details[0]['shape']
    
    X = np.zeros(input_shape,np.float32)
    X[0] = content_image
    
    input_data = X 
    interpreter.set_tensor(input_details[0]['index'], input_data)
    
    interpreter.invoke()
    output_data = interpreter.get_tensor(output_details[0]['index'])
    

    不幸的是output_data都是Nanes

    有人能给我一些关于调试的建议或者做这种转换的正确方法吗?

    多谢了瓦迪姆

  • 共有1个答案

    习华灿
    2023-03-14

    一个简单的方法来转换您的。铅进入。答案如下:

    https://stackoverflow.com/a/58583419/11517841

    为了确保您不会犯任何与架构相关的错误,这里有一个供参考的“小心”:

    https://stackoverflow.com/a/58583602/11517841

     类似资料:
    • 我已经使用tensorflow后端训练了一个DNN,我想在FireBase中托管它。训练好的模型被保存为.meta文件,我尝试使用下面的代码将模型转换为tflite,但我遇到了一些错误。那么我如何将这个模型转换成Tensorflow Lite呢?

    • 我想在Tensorflow中将整数量化的tflite模型转换为冻结图(.pb)。我通读并尝试了许多有关StackOverflow的解决方案,但没有一个有效。具体来说,toco不起作用(输出格式不能是TENSORFLOW\u GRAPHDEF)。 我的最终目标是通过tf2onnx获得量化的ONNX模型,但tf2onnx不支持tflite作为输入(只支持保存的_模型、检查点和图形_定义)。但是,在使用

    • 我是Tensorflow的初学者,请原谅我这个简单的问题,但我在哪里都找不到这个答案。我正致力于将mobilenet分段模型(http://download.tensorflow.org/models/deeplabv3_mnv2_pascal_trainval_2018_01_29.tar.gz)转换为Tensorflow-lite,用于移动推理,已经用了一个多星期了,但没有成功。我无法正确定义

    • 我目前在转换张量流时遇到问题。pb模型到TFlite格式。我目前正在遵循谷歌代码实验室的指示,错误说 Traceback(最近调用的最后一次):文件/usr/local/bin/tflite_convert,第5行,在tensorflow.lite.python.tflite_convert导入主重要错误:没有模块命名lite.python.tflite_convert 我正在使用谷歌提供的命令

    • 问题内容: 我遇到了ConcurrentModificationException,通过查看它,我看不到它发生的原因。引发异常的区域和所有修改集合的地方都被包围 我试图抓住讨厌的线程,但我能钉钉子(通过在异常中设置断点)是投掷线程拥有监视器,而另一个线程(程序中有两个线程)处于睡眠状态。 我应该如何进行?遇到类似的线程问题时,通常会做什么? 问题答案: 它可能与同步块无关。当您在迭代集合的元素时修

    • 如何调试 在快速开始文档里十分简略的描述了调试过程,本文将详细描述如何调试QAP工程。为了更加方便的调试,请安装Chrome浏览器。 进入根目录 cd /path/to/your project 对于还来得及创建工程的开发者,可以使用qap create hello_world命令创建最简单的工程,然后cd ./hello_world。 或者使用qap的示例工程,qap demo --NukeU