Android Tensorflow冻结协议文件检查点文件不';不存在
我正在使用这个演示中的retain.python文件。 我得到了不同类型的文件: 我想用checkpoints文件冻结graph.pb,优化冻结的文件,然后将优化的文件转换为tflite文件,以便在android应用程序中使用 我尝试了不同的方法来冻结文件,但没有成功 获取检查点文件在终端中不存在 及 UnicodeDecodeError:“utf-8”编解码器无法解码位置中的字节0x86 1:起始字节无效 如何完成所有步骤并获取tflite文件,以及如何组合labels.txt文件 注: 以下是我在终端中使用的命令: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文件 注:
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找到最好的解决方案。这太酷了。只是好奇为什么上面的命令不起作用……当你运行上面的命令时,你会得到什么错误?谢谢