اذهب إلى المحتوى

السؤال

نشر

لقد قمت بإعادة ضبط نموذج inception باستخدام مجموعة بيانات جديدة وحفظته كنموذج .h5. وهدفي الآن هو تشغيل النموذج الخاص بي على android Tensorflow الذي يقبل امتداد ".pb" فقط (protocol buffers). لذا هل هناك طريقة ما للقيام بهذا التحويل في كيراس أو تنسرفلو؟
 

Recommended Posts

  • 1
نشر

لا .. لا تتضمن Keras أي وسيلة لتصدير غراف TensorFlow كملف بامتداد pd، ولكن يمكنك القيام بذلك بنفسك من خلال TensorFlow. وتحديداُ من خلال freeze_graph.py وهي الطريقة "النموذجية" التي يتم القيام بها، حيث:
- يجمد حالة الجلسة في بيان مجتزأ. - يقوم بإنشاء graph جديد حيث يتم استبدال عقد المتغيرات بالثوابت التي تأخذ قيمتها الحالية في الجلسة. - سيتم تجزيئ الغراف الجديد بحيث تتم إزالة ال subgraphs غير الضرورية لحساب المخرجات المطلوبة.

def freeze_session(session, keep_var_names=None, output_names=None, clear_devices=True):
    graph = session.graph
    with graph.as_default():
        freeze_var_names = list(set(v.op.name for v in tf.global_variables()).difference(keep_var_names or []))
        output_names = output_names or []
        output_names += [v.op.name for v in tf.global_variables()]
        input_graph_def = graph.as_graph_def()
        if clear_devices:
            for node in input_graph_def.node:
                node.device = ""
        frozen_graph = tf.graph_util.convert_variables_to_constants(
            session, input_graph_def, output_names, freeze_var_names)
        return frozen_graph

- الوسيط session: جلسة تنسرفلو التي سيتم تجميدها. - keep_var_names قائمة بأسماء المتغيرات التي لا يجب أن بتم تجميدها،وفي حال تم ضبطه على None  سيتم تجميد كل المتغيرات في البيان. - output_names:هي قائمة بأسماء العمليات التي تنتج المخرجات التي تريدها. - clear_devices: لتحسين إمكانية النقل يتم ضبطه على True. وبالتالي يمكنك استخدامه كالتالي:

from keras import backend as K
# قم ببناء نموذجك
frozen_graph = freeze_session(K.get_session(),output_names=[out.op.name for out in model.outputs])

ثم يمكنك كتابة البيان في ملف باستخدام tf.train.write_graph:

tf.train.write_graph(frozen_graph, "path", "my_model.pb", as_text=False)

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...