Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.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
Android Tensorflow冻结协议文件检查点文件不';不存在_Android_Python_Tensorflow_Protocol Buffers_Tensorflow Lite - Fatal编程技术网

Android Tensorflow冻结协议文件检查点文件不';不存在

Android Tensorflow冻结协议文件检查点文件不';不存在,android,python,tensorflow,protocol-buffers,tensorflow-lite,Android,Python,Tensorflow,Protocol Buffers,Tensorflow Lite,我正在使用这个演示中的retain.python文件。 我得到了不同类型的文件: 我想用checkpoints文件冻结graph.pb,优化冻结的文件,然后将优化的文件转换为tflite文件,以便在android应用程序中使用 我尝试了不同的方法来冻结文件,但没有成功 获取检查点文件在终端中不存在 及 UnicodeDecodeError:“utf-8”编解码器无法解码位置中的字节0x86 1:起始字节无效 如何完成所有步骤并获取tflite文件,以及如何组合labels.txt文件 注:

我正在使用这个演示中的retain.python文件。 我得到了不同类型的文件:

我想用checkpoints文件冻结graph.pb,优化冻结的文件,然后将优化的文件转换为tflite文件,以便在android应用程序中使用

我尝试了不同的方法来冻结文件,但没有成功

获取检查点文件在终端中不存在

UnicodeDecodeError:“utf-8”编解码器无法解码位置中的字节0x86 1:起始字节无效

如何完成所有步骤并获取tflite文件,以及如何组合labels.txt文件

注: 以下是我在终端中使用的命令:

python freeze_graph.py \ 
--input_graph=/home/automator/Desktop/retrain/code/graph/graph.pb \ 
--input_checkpoint=/home/automator/Desktop/retrain/code/tmp/model.ckpt \ 
--output_graph=/home/automator/Desktop/retrain/code/frozen.pb \ 
--output_node_names=output_node \
--input_saved_model_dir=/home/automator/Desktop/retrain/code/export/frozen.pb \ --output_node_names=outInput 
错误: 检查点“”不存在

已尝试:

--input_checkpoint=/home/automator/Desktop/retrain/code/tmp/model.ckpt
--input_checkpoint=/home/automator/Desktop/retrain/code/tmp/model
--input_checkpoint=/home/automator/Desktop/retrain/code/tmp/modelmodel.ckpt
....

请帮忙

这是一个很好的冻结图形的脚本

import os
import argparse
import tensorflow as tf
from tensorflow.python.framework import graph_util
from tensorflow.python.platform import gfile


def load_graph_def(model_path, sess=None):
    if os.path.isfile(model_path):
        with gfile.FastGFile(model_path, 'rb') as f:
            graph_def = tf.GraphDef()
            graph_def.ParseFromString(f.read())
            tf.import_graph_def(graph_def, name='')
    else:
        sess = sess if sess is not None else tf.get_default_session()
        saver = tf.train.import_meta_graph(model_path + '.meta')
        saver.restore(sess, model_path)


def freeze_from_checkpoint(checkpoint_file, output_layer_name):

    model_folder = os.path.basename(checkpoint_file)
    output_graph = os.path.join(model_folder, checkpoint_file + '.pb')

    with tf.Session() as sess:

        load_graph_def(checkpoint_file)

        graph = tf.get_default_graph()
        input_graph_def = graph.as_graph_def()

        print("Exporting graph...")
        output_graph_def = graph_util.convert_variables_to_constants(
            sess,
            input_graph_def,
            output_layer_name.split(","))

        with tf.gfile.GFile(output_graph, "wb") as f:
            f.write(output_graph_def.SerializeToString())


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('model_path')
    parser.add_argument('output_layer')
    args = parser.parse_args()
    freeze_from_checkpoint(checkpoint_file=args.model_path, output_layer_name=args.output_layer)
将其另存为freeze_graph.py

叫它:
python freeze_graph.py/home/automator/Desktop/retain/code/tmp/model.data-000000-of-00001“output_node_name”

下面是一个冻结图形的好脚本

import os
import argparse
import tensorflow as tf
from tensorflow.python.framework import graph_util
from tensorflow.python.platform import gfile


def load_graph_def(model_path, sess=None):
    if os.path.isfile(model_path):
        with gfile.FastGFile(model_path, 'rb') as f:
            graph_def = tf.GraphDef()
            graph_def.ParseFromString(f.read())
            tf.import_graph_def(graph_def, name='')
    else:
        sess = sess if sess is not None else tf.get_default_session()
        saver = tf.train.import_meta_graph(model_path + '.meta')
        saver.restore(sess, model_path)


def freeze_from_checkpoint(checkpoint_file, output_layer_name):

    model_folder = os.path.basename(checkpoint_file)
    output_graph = os.path.join(model_folder, checkpoint_file + '.pb')

    with tf.Session() as sess:

        load_graph_def(checkpoint_file)

        graph = tf.get_default_graph()
        input_graph_def = graph.as_graph_def()

        print("Exporting graph...")
        output_graph_def = graph_util.convert_variables_to_constants(
            sess,
            input_graph_def,
            output_layer_name.split(","))

        with tf.gfile.GFile(output_graph, "wb") as f:
            f.write(output_graph_def.SerializeToString())


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('model_path')
    parser.add_argument('output_layer')
    args = parser.parse_args()
    freeze_from_checkpoint(checkpoint_file=args.model_path, output_layer_name=args.output_layer)
将其另存为freeze_graph.py

叫它:
python freeze\u graph.py/home/automator/Desktop/retain/code/tmp/model.data-000000-of-00001“output\u node\u name”

如果保存了一个
元图
,请尝试使用
输入元图
参数:

python freeze_graph.py \ 
--input_meta_graph=/home/automator/Desktop/retrain/code/tmp/model.meta \ 
--input_checkpoint=/home/automator/Desktop/retrain/code/tmp/model.ckpt \ 
--input_binary=true \
--output_graph=/home/automator/Desktop/retrain/code/frozen.pb \ 
--output_node_names=output_node 

问题是您正在传递
--input\u saved\u model\u dir
参数,而
input\u meta\u graph
参数似乎没有。鉴于您保存了
meta graph
,请尝试使用
input\u meta\u graph
参数:

python freeze_graph.py \ 
--input_meta_graph=/home/automator/Desktop/retrain/code/tmp/model.meta \ 
--input_checkpoint=/home/automator/Desktop/retrain/code/tmp/model.ckpt \ 
--input_binary=true \
--output_graph=/home/automator/Desktop/retrain/code/frozen.pb \ 
--output_node_names=output_node 

问题是,您正在传递
--input\u saved\u model\u dir
参数,而
input\u meta\u graph
参数,但您似乎没有。

Meir,您的好代码在将“model.data-000000-of-00001”更改为“model”后工作正常。首先,我没有得到这样的文件,然后在将其更改为model only之后,它工作得很好,但是元文件大小是2.2MB,冻结的文件只有83字节,这有意义吗?如果是这样,请让我知道,如果你有快速的方式将文件转换为TFLite。我尝试转换=>convert\u saved\u model.convert(saved\u model\u dir…),但我不想用变量转换保存的model.pb,而是转换冻结的。我还没有将任何模型转换为tflite,但也许你可以看看这里:bazel build tensorflow/tools/graph\u transforms:transform\u graph bazel bin/tensorflow/tools/graph\u transforms/transform\u graph \--in\u graph=tensorflow\u inception\u graph.pb \--out\u graph=optimized\u inception\u graph.pb \--inputs='Mul:0'--outputs='softmax:0'\Meir,将'model.data-000000-of-00001'更改为'model'后,您的nice代码工作正常。首先,我没有得到这样的文件,然后在将其更改为model only之后,它工作得很好,但是元文件大小是2.2MB,冻结的文件只有83字节,这有意义吗?如果是这样,请让我知道,如果你有快速的方式将文件转换为TFLite。我尝试转换=>convert\u saved\u model.convert(saved\u model\u dir…),但我不想用变量转换保存的model.pb,而是转换冻结的。我还没有将任何模型转换为tflite,但也许你可以看看这里:bazel build tensorflow/tools/graph\u transforms:transform\u graph bazel bin/tensorflow/tools/graph\u transforms/transform\u graph \--in\u graph=tensorflow\u inception\u graph.pb \--out\u graph=optimized\u inception\u graph.pb \--inputs='Mul:0'--outputs='softmax:0'\尝试添加所有需要的参数,但没有成功,事实上,我更喜欢用python找到最好的解决方案。那太酷了。只是好奇为什么上面的命令不起作用……当你运行上面的命令时,你会得到什么错误?谢谢。我试着添加了所有需要的参数,但没有成功,实际上我更喜欢用python找到最好的解决方案。这太酷了。只是好奇为什么上面的命令不起作用……当你运行上面的命令时,你会得到什么错误?谢谢