تست مدل فریز شده تنسورفلو - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تست مدل فریز شده تنسورفلو

0 امتیاز

سلام .من تنسورفلو تازه وارد هستم مدلی که ساختم را تست کردم دقتش درسته و از روی مدل ساخته شده مدل فریز شده ساختم طبق اطلاعات این پست پیش رفتم آیا راهی وجود داره خود مدل فریز شده را در پایتون inference کنم که اگر خواستم سمت c++ استفاده کنم خطایی پیش نیاد؟

سوال شده اسفند 1, 1397  بوسیله ی Ali_GH (امتیاز 368)   4 14 19

1 پاسخ

0 امتیاز

سلام.

فایل 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)


 

پاسخ داده شده اسفند 2, 1397 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
دوباره نشان داده شد اسفند 2, 1397 بوسیله ی مصطفی ساتکی
...