Tensorflow DecodeError:运行Graph.ParseFromString()时截断了消息
我从tensorflow/tensorflow/image_retaining/retain.py下载了代码,并根据需要对模型进行了一些修改(如查找训练图像文件夹的路径以及保存模型和标签的位置等)。在运行retain.py文件时,我在执行结束时收到以下消息Tensorflow DecodeError:运行Graph.ParseFromString()时截断了消息,tensorflow,python-3.6,Tensorflow,Python 3.6,我从tensorflow/tensorflow/image_retaining/retain.py下载了代码,并根据需要对模型进行了一些修改(如查找训练图像文件夹的路径以及保存模型和标签的位置等)。在运行retain.py文件时,我在执行结束时收到以下消息 An exception has occurred, use %tb to see the full traceback. SystemExit 使用%tb查看堆栈跟踪时,我得到 Traceback (most recent call l
An exception has occurred, use %tb to see the full traceback.
SystemExit
使用%tb查看堆栈跟踪时,我得到
Traceback (most recent call last):
File "<ipython-input-11-06ad74d82e7c>", line 1, in <module>
runfile('C:/Users/Srikanth1.R/Desktop/Desktop/My_Folder/Inage analytics/hub-master/examples/image_retraining/retrain.py', wdir='C:/Users/Srikanth1.R/Desktop/Desktop/My_Folder/Inage analytics/hub-master/examples/image_retraining')
File "C:\Users\Srikanth1.R\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
File "C:\Users\Srikanth1.R\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Srikanth1.R/Desktop/Desktop/My_Folder/Inage analytics/hub-master/examples/image_retraining/retrain.py", line 2424, in <module>
tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
File "C:\Users\Srikanth1.R\AppData\Local\Continuum\anaconda3\lib\site-packages\tensorflow\python\platform\app.py", line 134, in run
SystemExit
上述解码错误在某种程度上是否与我在运行retain.py时遇到的错误有关
或者这两个错误是独立的
谁能告诉我如何解决上述错误
提前感谢您?您也可以使用下面提到的方法进行预测
with tf.Session(graph=tf.Graph()) as sess:
tf.saved_model.loader.load(
sess, [tf.saved_model.tag_constants.SERVING], <path for .pb file>)
sess.run(...)
确保模型_文件应为冻结图形。
有关更多详细信息,请参阅链接
def load_graph(model_file):
graph = tf.Graph()
graph_def = tf.GraphDef()
with open(model_file, "rb") as f:
graph_def.ParseFromString(f.read())
with graph.as_default():
tf.import_graph_def(graph_def)
return graph
def read_tensor_from_image_file(file_name,
input_height=299,
input_width=299,
input_mean=0,
input_std=255):
input_name = "file_reader"
output_name = "normalized"
file_reader = tf.read_file(file_name, input_name)
if file_name.endswith(".png"):
image_reader = tf.image.decode_png(
file_reader, channels=3, name="png_reader")
elif file_name.endswith(".gif"):
image_reader = tf.squeeze(
tf.image.decode_gif(file_reader, name="gif_reader"))
elif file_name.endswith(".bmp"):
image_reader = tf.image.decode_bmp(file_reader, name="bmp_reader")
else:
image_reader = tf.image.decode_jpeg(
file_reader, channels=3, name="jpeg_reader")
float_caster = tf.cast(image_reader, tf.float32)
dims_expander = tf.expand_dims(float_caster, 0)
resized = tf.image.resize_bilinear(dims_expander, [input_height, input_width])
normalized = tf.divide(tf.subtract(resized, [input_mean]), [input_std])
sess = tf.Session()
result = sess.run(normalized)
return result
def load_labels(label_file):
label = []
proto_as_ascii_lines = tf.gfile.GFile(label_file).readlines()
for l in proto_as_ascii_lines:
label.append(l.rstrip())
return label
if __name__ == "__main__":
file_name = "C:\\Users\\Srikanth1.R\\Desktop\\Car Images\\car.jpg"
model_file = "C:\\Users\\Srikanth1.R\\Desktop\\Desktop\\My_Folder\\Inage analytics\\hub-master\\examples\\image_retraining\\tmp\\saved_model\\saved_model.pb"
label_file = "C:\\Users\\Srikanth1.R\\Desktop\\Desktop\\My_Folder\\Inage analytics\\hub-master\\examples\\image_retraining\\tmp\\output_labels.txt"
input_height = 299
input_width = 299
input_mean = 0
input_std = 255
input_layer = "input"
output_layer = "InceptionV3/Predictions/Reshape_1"
parser = argparse.ArgumentParser()
parser.add_argument("--image", help="image to be processed")
parser.add_argument("--graph", help="graph/model to be executed")
parser.add_argument("--labels", help="name of file containing labels")
parser.add_argument("--input_height", type=int, help="input height")
parser.add_argument("--input_width", type=int, help="input width")
parser.add_argument("--input_mean", type=int, help="input mean")
parser.add_argument("--input_std", type=int, help="input std")
parser.add_argument("--input_layer", help="name of input layer")
parser.add_argument("--output_layer", help="name of output layer")
args = parser.parse_args()
if args.graph:
model_file = args.graph
if args.image:
file_name = args.image
if args.labels:
label_file = args.labels
if args.input_height:
input_height = args.input_height
if args.input_width:
input_width = args.input_width
if args.input_mean:
input_mean = args.input_mean
if args.input_std:
input_std = args.input_std
if args.input_layer:
input_layer = args.input_layer
if args.output_layer:
output_layer = args.output_layer
graph = load_graph(model_file)
t = read_tensor_from_image_file(
file_name,
input_height=input_height,
input_width=input_width,
input_mean=input_mean,
input_std=input_std)
input_name = "import/" + input_layer
output_name = "import/" + output_layer
input_operation = graph.get_operation_by_name(input_name)
output_operation = graph.get_operation_by_name(output_name)
with tf.Session(graph=graph) as sess:
results = sess.run(output_operation.outputs[0], {
input_operation.outputs[0]: t
})
results = np.squeeze(results)
top_k = results.argsort()[-5:][::-1]
labels = load_labels(label_file)
for i in top_k:
print(labels[i], results[i])
with tf.Session(graph=tf.Graph()) as sess:
tf.saved_model.loader.load(
sess, [tf.saved_model.tag_constants.SERVING], <path for .pb file>)
sess.run(...)
def load_graph(model_file):
graph = tf.Graph()
graph_def = tf.GraphDef()
with open(model_file, "rb") as f:
graph_def.ParseFromString(f.read())
with graph.as_default():
tf.import_graph_def(graph_def)
return graph