سلام.
فایل graphdef را تو گراف جاری یا گراف مورد نظرتون لود کنید بعد از اون هم باید ورودی خروجی گراف را از طریق متد get_tensor_by_name دریافت کنید سپس تنسور خروجی را eval کنید .یه مثال کامل قرار میدم تا ذقیق تر متوجه بشید در ضمن توجه کنید ورودی و خروجی اون فرمتی نیست که summerize_graph به شما میگه شما با خودتون کلیه operation های گراف رو پیمایش کنید تا اسم صحیح رو پیدا کنید در ضمن این نام ها شامل دو بخش که با کاراکتر ":" از هم جدا میشن اگر اولین ورودی یا خروجی مد نظر شماست باید این پارامتر را صفر بدید .
def load_graph(frozen_graph_filename):
with tf.gfile.GFile(frozen_graph_filename, "rb") as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
with tf.Graph().as_default() as graph:
tf.import_graph_def(graph_def, name="prefix")
return graph
def testFreezeModel(model_file_name, images_path):
graph = load_graph(model_file_name)
classes = ["background", "invert", "norm"]
total_count = 0
correct_count = 0
for i, cls in enumerate(classes):
dst_path = os.path.join(images_path, cls)
image_files_name = glob.glob(dst_path + "/*.*")
cur_count = len(image_files_name)
total_count += cur_count
for op in graph.get_operations():
print(op.name)
x = graph.get_tensor_by_name('prefix/mobilenetv2_0.35_96_input:0')
y = graph.get_tensor_by_name('prefix/dense_1/Sigmoid:0')
for j, file_name in enumerate(image_files_name):
img = image.load_img(file_name, target_size=(96, 96))
img_tensor = image.img_to_array(img)
img_tensor = np.expand_dims(img_tensor, axis=0)
img_tensor /= 255.
with tf.Session(graph=graph) as sess:
y_out = sess.run(y, feed_dict={
x: img_tensor
})
print(y_out)
classId = np.argmax(y_out)
if classId == i:
correct_count += 1
print(float(j) / cur_count, " ", float(correct_count) / total_count)