我正准备使用https://www.tensorflow.org/mobile/prepare_models
中的说明在Android手机上运行自定义模型首先,我使用以下命令在自定义图像上重新训练模型:
$ python tensorflow/examples/image_retraining/retrain.py --image_dir tensorflow/examples/image_retraining/my_images/ --learning_rate=0.0005 --testing_percentage=15 --validation_percentage=15 --train_batch_size=32 --validation_batch_size=-1 --flip_left_right True --random_scale=30 --random_brightness=30 --eval_step_interval=100 --how_many_training_steps=100 --tfhub_module https://tfhub.dev/google/imagenet/mobilenet_v2_100_224/feature_vector/1
并且作为下一步,我使用label_image.py
测试了模型,这也可以很好地预测输入图像。但是,freeze_graph会出错
$ bazel-bin/tensorflow/python/tools/freeze_graph --input_graph=/tmp/output_graph.pb --output_graph=/tmp/frozen_graph.pb
但是,我一直收到这个错误。
UnicodeDecodeError:'utf-8'编解码器无法解码位置的字节0xff 57:无效的起始字节
答案 0 :(得分:1)
我注意到你的--input_graph=/tmp/output_graph.pb
。您的图表是作为二进制文件(as_text=False
)而不是pbtxt
编写的吗?如果是这样,您需要将--input_binary=true
标记传递给freeze_graph
。
答案 1 :(得分:0)
如果使用以下方式将图形写为二进制文件
:tf.train.write_graph(sess.graph_def, 'tarinGraph', 'train2.pbtxt', as_text=False)
然后您将需要传递--input_binary=true flag to freeze_graph
。