From patchwork Tue Jul 30 01:25:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guo, Yejun" X-Patchwork-Id: 14136 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 25D12449E35 for ; Tue, 30 Jul 2019 04:29:11 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 079FD689A5E; Tue, 30 Jul 2019 04:29:11 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 11601680A1D for ; Tue, 30 Jul 2019 04:29:03 +0300 (EEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Jul 2019 18:29:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,324,1559545200"; d="scan'208";a="370756399" Received: from yguo18-skl-u1604.sh.intel.com ([10.239.13.25]) by fmsmga005.fm.intel.com with ESMTP; 29 Jul 2019 18:29:01 -0700 From: "Guo, Yejun" To: ffmpeg-devel@ffmpeg.org Date: Tue, 30 Jul 2019 09:25:56 +0800 Message-Id: <1564449956-4324-1-git-send-email-yejun.guo@intel.com> X-Mailer: git-send-email 2.7.4 Subject: [FFmpeg-devel] [PATCH 1/2] convert_from_tensorflow.py: add option to dump graph for visualization in tensorboard X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: yejun.guo@intel.com MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Guo, Yejun --- tools/python/convert.py | 6 +++++- tools/python/convert_from_tensorflow.py | 13 +++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/tools/python/convert.py b/tools/python/convert.py index 662b429..64cf76b 100644 --- a/tools/python/convert.py +++ b/tools/python/convert.py @@ -27,6 +27,7 @@ def get_arguments(): parser.add_argument('--outdir', type=str, default='./', help='where to put generated files') parser.add_argument('--infmt', type=str, default='tensorflow', help='format of the deep learning model') parser.add_argument('infile', help='path to the deep learning model with weights') + parser.add_argument('--dump4tb', type=str, default='no', help='dump file for visualization in tensorboard') return parser.parse_args() @@ -44,9 +45,12 @@ def main(): basefile = os.path.split(args.infile)[1] basefile = os.path.splitext(basefile)[0] outfile = os.path.join(args.outdir, basefile) + '.model' + dump4tb = False + if args.dump4tb.lower() in ('yes', 'true', 't', 'y', '1'): + dump4tb = True if args.infmt == 'tensorflow': - convert_from_tensorflow(args.infile, outfile) + convert_from_tensorflow(args.infile, outfile, dump4tb) if __name__ == '__main__': main() diff --git a/tools/python/convert_from_tensorflow.py b/tools/python/convert_from_tensorflow.py index 041c82c..804c14f 100644 --- a/tools/python/convert_from_tensorflow.py +++ b/tools/python/convert_from_tensorflow.py @@ -24,10 +24,11 @@ import sys, struct __all__ = ['convert_from_tensorflow'] class TFConverter: - def __init__(self, graph_def, nodes, outfile): + def __init__(self, graph_def, nodes, outfile, dump4tb): self.graph_def = graph_def self.nodes = nodes self.outfile = outfile + self.dump4tb = dump4tb self.layer_number = 0 self.output_names = [] self.name_node_dict = {} @@ -42,8 +43,8 @@ class TFConverter: def dump_for_tensorboard(self): graph = tf.get_default_graph() tf.import_graph_def(self.graph_def, name="") - # tensorboard --logdir=/tmp/graph tf.summary.FileWriter('/tmp/graph', graph) + print('graph saved, run "tensorboard --logdir=/tmp/graph" to see it') def get_conv2d_params(self, node): @@ -197,18 +198,18 @@ class TFConverter: self.remove_identity() self.generate_edges() - #check the graph with tensorboard with human eyes - #self.dump_for_tensorboard() + if self.dump4tb: + self.dump_for_tensorboard() self.dump_to_file() -def convert_from_tensorflow(infile, outfile): +def convert_from_tensorflow(infile, outfile, dump4tb): with open(infile, 'rb') as f: # read the file in .proto format graph_def = tf.GraphDef() graph_def.ParseFromString(f.read()) nodes = graph_def.node - converter = TFConverter(graph_def, nodes, outfile) + converter = TFConverter(graph_def, nodes, outfile, dump4tb) converter.run()