天天看點

Tensorflow Summary: 檢視Tensorflow Model pb格式模型的資訊

參考文鍊:如何檢視Tensorflow SavedModel格式模型的資訊;

參考:summary方法--小酒窩的部落格;

參考:tensorflow中輸出參數的方法--詳細;

tensorflow生成的pb圖,netron嫌棄太大打不開, 是以需要借助于tensorboard檢視工具;

0.檢視模型的Signature簽名

這裡的簽名,并非是為了保證模型不被修改的那種電子簽名。我的了解是類似于程式設計語言中子產品的輸入輸出資訊,比如函數名,輸入參數類型,輸出參數類型等等。我們以《Tensorflow SavedModel模型的儲存與加載》裡的代碼為例,從語句:

signature = predict_signature_def(inputs={'myInput': x},

                                  outputs={'myOutput': y})

我們可以看到模型的輸入名為myInput,輸出名為myOutput。如果我們沒有源碼呢?

Tensorflow提供了一個工具,如果你下載下傳了Tensorflow的源碼,可以找到這樣一個檔案,./tensorflow/python/tools/saved_model_cli.py,你可以加上-h參數檢視該腳本的幫助資訊:

command:

python $TENSORFLOW_DIR/tensorflow/python/tools/saved_model_cli.py show --dir ./model/ --all
           

1.使用summary

def load_pb_kera(self,pb_file_path):
        from tensorflow.python.platform import gfile

        sess = tf.Session()
        #with gfile.FastGFile(pb_file_path + 'model.pb', 'rb') as f:
        with gfile.FastGFile(pb_file_path, 'rb') as f:
            graph_def = tf.GraphDef()
            graph_def.ParseFromString(f.read())
            sess.graph.as_default()
            tf.import_graph_def(graph_def, name='')  # 導入計算圖

        # 需要有一個初始化的過程
        #sess.run(tf.global_variables_initializer())
        init = tf.global_variables_initializer()
        sess.run(init)
        #tf.summary.
        LOGDIR = './logdir'
        train_writer = tf.summary.FileWriter(LOGDIR)
        train_writer.add_graph(sess.graph)
        train_writer.flush()
        train_writer.close()
           

summary寫入工程檔案的"./logdir"目錄下,生成諸如:events.out.tfevents.1557229671.wishchin-MS-1604 檔案

進入工程目錄,

bash:

$ tensorboard --logdir ./logdir

啟動了tensorboard服務

2.在浏覽器中檢視結構

打開chorme浏覽器,在位址欄輸入:http://localhost:6006;  個人建議使用火狐.

即可完成可視化

Tensorflow Summary: 檢視Tensorflow Model pb格式模型的資訊

檢視得MaskRCNN 模型

frozen_inference_graph_incepV2.pb
           

的輸入參數為:

input_image

Operation: Placeholder

Attributes (2)

dtype  {"type":"DT_FLOAT"}

shape {"shape":{"dim":[{"size":-1},{"size":224},{"size":224},{"size":3}]}}

Inputs (0)

Outputs (1)

bbn_stage1_block1_conv/convolution?×224×224×3

輸入節點在最下面的資料流的起點位置....

繼續閱讀