diff options
author | A. Unique TensorFlower <gardener@tensorflow.org> | 2017-06-22 20:41:27 -0700 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2017-06-22 20:45:31 -0700 |
commit | 5af6b3e40161ead74390278053de81908bfd7674 (patch) | |
tree | 76c0a146ec3d6357a450c66c6e65bf97d32711ce /tensorflow/contrib/tfprof | |
parent | 5b40328addf40a221d3ef717e2ac707f64973dd9 (diff) |
Make occurence (op run times and op definition) selectable
in all views to address the loop problem.
When a node is in loop, its execution times are accumulated, its run times
will increase.
PiperOrigin-RevId: 159912429
Diffstat (limited to 'tensorflow/contrib/tfprof')
4 files changed, 127 insertions, 12 deletions
diff --git a/tensorflow/contrib/tfprof/python/tools/tfprof/internal/BUILD b/tensorflow/contrib/tfprof/python/tools/tfprof/internal/BUILD index e844046811..7abfb62214 100644 --- a/tensorflow/contrib/tfprof/python/tools/tfprof/internal/BUILD +++ b/tensorflow/contrib/tfprof/python/tools/tfprof/internal/BUILD @@ -65,6 +65,7 @@ cuda_py_test( name = "run_metadata_test", srcs = ["run_metadata_test.py"], additional_deps = [ + ":model_analyzer_testlib", "//tensorflow/contrib/tfprof/python/tools/tfprof:model_analyzer", "//tensorflow/python:array_ops", "//tensorflow/python:client_testlib", @@ -72,6 +73,7 @@ cuda_py_test( "//tensorflow/python:random_ops", "//tensorflow/tools/tfprof:protos_all_py", ], + tags = ["no_pip"], ) # ----------------------------------------------------------------------------- diff --git a/tensorflow/contrib/tfprof/python/tools/tfprof/internal/print_model_analysis_test.py b/tensorflow/contrib/tfprof/python/tools/tfprof/internal/print_model_analysis_test.py index 091fcdef88..84a37e087b 100644 --- a/tensorflow/contrib/tfprof/python/tools/tfprof/internal/print_model_analysis_test.py +++ b/tensorflow/contrib/tfprof/python/tools/tfprof/internal/print_model_analysis_test.py @@ -157,6 +157,9 @@ class PrintModelAnalysisTest(test.TestCase): cpu_exec_micros: 0 total_accelerator_exec_micros: 0 total_cpu_exec_micros: 0 + run_count: 0 + total_run_count: 0 + total_definition_count: 1 } children { name: "DW" @@ -213,6 +216,9 @@ class PrintModelAnalysisTest(test.TestCase): cpu_exec_micros: 0 total_accelerator_exec_micros: 0 total_cpu_exec_micros: 0 + run_count: 0 + total_run_count: 0 + total_definition_count: 1 } children { name: "DW/Initializer" @@ -249,6 +255,9 @@ class PrintModelAnalysisTest(test.TestCase): cpu_exec_micros: 0 total_accelerator_exec_micros: 0 total_cpu_exec_micros: 0 + run_count: 0 + total_run_count: 0 + total_definition_count: 1 } children { name: "DW/Initializer/random_normal/mean" @@ -263,6 +272,9 @@ class PrintModelAnalysisTest(test.TestCase): cpu_exec_micros: 0 total_accelerator_exec_micros: 0 total_cpu_exec_micros: 0 + run_count: 0 + total_run_count: 0 + total_definition_count: 1 } children { name: "DW/Initializer/random_normal/mul" @@ -302,6 +314,9 @@ class PrintModelAnalysisTest(test.TestCase): cpu_exec_micros: 0 total_accelerator_exec_micros: 0 total_cpu_exec_micros: 0 + run_count: 0 + total_run_count: 0 + total_definition_count: 1 } children { name: "DW/Initializer/random_normal/shape" @@ -316,6 +331,9 @@ class PrintModelAnalysisTest(test.TestCase): cpu_exec_micros: 0 total_accelerator_exec_micros: 0 total_cpu_exec_micros: 0 + run_count: 0 + total_run_count: 0 + total_definition_count: 1 } children { name: "DW/Initializer/random_normal/stddev" @@ -330,6 +348,9 @@ class PrintModelAnalysisTest(test.TestCase): cpu_exec_micros: 0 total_accelerator_exec_micros: 0 total_cpu_exec_micros: 0 + run_count: 0 + total_run_count: 0 + total_definition_count: 1 } float_ops: 0 total_float_ops: 0 @@ -362,6 +383,9 @@ class PrintModelAnalysisTest(test.TestCase): cpu_exec_micros: 0 total_accelerator_exec_micros: 0 total_cpu_exec_micros: 0 + run_count: 0 + total_run_count: 0 + total_definition_count: 6 } float_ops: 0 total_float_ops: 0 @@ -369,6 +393,9 @@ class PrintModelAnalysisTest(test.TestCase): cpu_exec_micros: 0 total_accelerator_exec_micros: 0 total_cpu_exec_micros: 0 + run_count: 0 + total_run_count: 0 + total_definition_count: 7 } children { name: "DW/read" @@ -400,6 +427,9 @@ class PrintModelAnalysisTest(test.TestCase): cpu_exec_micros: 0 total_accelerator_exec_micros: 0 total_cpu_exec_micros: 0 + run_count: 0 + total_run_count: 0 + total_definition_count: 1 } float_ops: 0 total_float_ops: 0 @@ -407,6 +437,9 @@ class PrintModelAnalysisTest(test.TestCase): cpu_exec_micros: 0 total_accelerator_exec_micros: 0 total_cpu_exec_micros: 0 + run_count: 0 + total_run_count: 0 + total_definition_count: 10 } children { name: "zeros" @@ -421,13 +454,19 @@ class PrintModelAnalysisTest(test.TestCase): cpu_exec_micros: 0 total_accelerator_exec_micros: 0 total_cpu_exec_micros: 0 + run_count: 0 + total_run_count: 0 + total_definition_count: 1 } float_ops: 0 total_float_ops: 0 accelerator_exec_micros: 0 cpu_exec_micros: 0 total_accelerator_exec_micros: 0 - total_cpu_exec_micros: 0""", expected_pb) + total_cpu_exec_micros: 0 + run_count: 0 + total_run_count: 0 + total_definition_count: 13""", expected_pb) self.assertEqual(expected_pb, tfprof_pb) diff --git a/tensorflow/contrib/tfprof/python/tools/tfprof/internal/run_metadata_test.py b/tensorflow/contrib/tfprof/python/tools/tfprof/internal/run_metadata_test.py index feb20dc0f4..9c59df3117 100644 --- a/tensorflow/contrib/tfprof/python/tools/tfprof/internal/run_metadata_test.py +++ b/tensorflow/contrib/tfprof/python/tools/tfprof/internal/run_metadata_test.py @@ -27,12 +27,13 @@ from tensorflow.python.client import session from tensorflow.python.framework import ops from tensorflow.python.ops import math_ops from tensorflow.python.ops import random_ops +from tensorflow.python.ops import variables from tensorflow.python.platform import test # pylint: disable=g-bad-import-order # XXX: this depends on pywrap_tensorflow and must come later from tensorflow.contrib.tfprof.python.tools.tfprof import model_analyzer - +from tensorflow.contrib.tfprof.python.tools.tfprof.internal import model_analyzer_testlib as lib SIZE = 1300 @@ -68,15 +69,32 @@ def _run_model(): return tfprof_node, run_metadata +def _run_loop_model(): + with session.Session() as sess: + x = lib.BuildFullModel() + + sess.run(variables.global_variables_initializer()) + run_meta = config_pb2.RunMetadata() + _ = sess.run(x, + options=config_pb2.RunOptions( + trace_level=config_pb2.RunOptions.FULL_TRACE), + run_metadata=run_meta) + + tfprof_node = model_analyzer.print_model_analysis( + sess.graph, run_meta, + tfprof_options=model_analyzer.PRINT_ALL_TIMING_MEMORY) + return tfprof_node, run_meta + + class RunMetadataTest(test.TestCase): def testGPU(self): if not test.is_gpu_available(): return + ops.reset_default_graph() with ops.device('/gpu:0'): tfprof_node, run_meta = _run_model() - self.assertEqual(tfprof_node.children[0].name, 'MatMul') self.assertGreater(tfprof_node.children[0].exec_micros, 10) @@ -94,9 +112,9 @@ class RunMetadataTest(test.TestCase): self.assertTrue(has_all_stream) def testCPU(self): + ops.reset_default_graph() with ops.device('/cpu:0'): tfprof_node, run_meta = _run_model() - self.assertEqual(tfprof_node.children[0].name, 'MatMul') self.assertGreater(tfprof_node.children[0].exec_micros, 10) @@ -107,5 +125,61 @@ class RunMetadataTest(test.TestCase): ret = _extract_node(run_meta, 'MatMul:MatMul') self.assertEqual(len(ret), 0) + def testLoopCPU(self): + ops.reset_default_graph() + with ops.device('/cpu:0'): + tfprof_node, run_meta = _run_loop_model() + # The while-loop caused a node to appear 4 times in scheduling. + ret = _extract_node(run_meta, + 'rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul') + self.assertEqual(len(ret['/job:localhost/replica:0/task:0/cpu:0']), 4) + + total_cpu_execs = 0 + for node in ret['/job:localhost/replica:0/task:0/cpu:0']: + total_cpu_execs += node.op_end_rel_micros + + mm_node = lib.SearchTFProfNode( + tfprof_node, + 'rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul') + + self.assertEqual(mm_node.run_count, 4) + self.assertEqual(mm_node.cpu_exec_micros, total_cpu_execs) + self.assertEqual(mm_node.exec_micros, total_cpu_execs) + + def testLoopGPU(self): + if not test.is_gpu_available(): + return + + ops.reset_default_graph() + with ops.device('/gpu:0'): + tfprof_node, run_meta = _run_loop_model() + # The while-loop caused a node to appear 4 times in scheduling. + ret = _extract_node(run_meta, + 'rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul') + self.assertEqual(len(ret['/job:localhost/replica:0/task:0/gpu:0']), 4) + + total_cpu_execs = 0 + for node in ret['/job:localhost/replica:0/task:0/gpu:0']: + total_cpu_execs += node.op_end_rel_micros + + ret = _extract_node( + run_meta, + 'rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul:MatMul') + self.assertGreaterEqual(len(ret['/gpu:0/stream:all']), 4) + + total_accelerator_execs = 0 + for node in ret['/gpu:0/stream:all']: + total_accelerator_execs += node.op_end_rel_micros + + mm_node = lib.SearchTFProfNode( + tfprof_node, + 'rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul') + + self.assertEqual(mm_node.run_count, 4) + self.assertEqual(mm_node.accelerator_exec_micros, total_accelerator_execs) + self.assertEqual(mm_node.cpu_exec_micros, total_cpu_execs) + self.assertEqual(mm_node.exec_micros, + total_cpu_execs + total_accelerator_execs) + if __name__ == '__main__': test.main() diff --git a/tensorflow/contrib/tfprof/python/tools/tfprof/model_analyzer_test.py b/tensorflow/contrib/tfprof/python/tools/tfprof/model_analyzer_test.py index ec7540a657..fea27a82a5 100644 --- a/tensorflow/contrib/tfprof/python/tools/tfprof/model_analyzer_test.py +++ b/tensorflow/contrib/tfprof/python/tools/tfprof/model_analyzer_test.py @@ -34,7 +34,7 @@ class PrintModelAnalysisTest(test.TestCase): def testDumpToFile(self): ops.reset_default_graph() - opts = model_analyzer.TRAINABLE_VARS_PARAMS_STAT_OPTIONS + opts = model_analyzer.TRAINABLE_VARS_PARAMS_STAT_OPTIONS.copy() outfile = os.path.join(test.get_temp_dir(), 'dump') opts['output'] = 'file:outfile=' + outfile @@ -52,7 +52,7 @@ class PrintModelAnalysisTest(test.TestCase): def testSelectEverything(self): ops.reset_default_graph() - opts = model_analyzer.TRAINABLE_VARS_PARAMS_STAT_OPTIONS + opts = model_analyzer.TRAINABLE_VARS_PARAMS_STAT_OPTIONS.copy() outfile = os.path.join(test.get_temp_dir(), 'dump') opts['output'] = 'file:outfile=' + outfile opts['account_type_regexes'] = ['.*'] @@ -77,7 +77,7 @@ class PrintModelAnalysisTest(test.TestCase): with gfile.Open(outfile, 'r') as f: # pylint: disable=line-too-long self.assertEqual( - 'node name | # parameters | # float_ops | assigned devices | op types | input shapes\n_TFProfRoot (--/451 params, --/10.44k flops, _kTFScopeParent, )\n Conv2D (0/0 params, 5.83k/5.83k flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Conv2D, 0:2x6x6x3|1:3x3x3x6)\n Conv2D_1 (0/0 params, 4.61k/4.61k flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Conv2D, 0:2x3x3x6|1:2x2x6x12)\n DW (3x3x3x6, 162/162 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|VariableV2|_trainable_variables, )\n DW/Assign (0/0 params, 0/0 flops, Assign, 0:3x3x3x6|1:3x3x3x6)\n DW/Initializer (0/0 params, 0/0 flops, _kTFScopeParent, )\n DW/Initializer/random_normal (0/0 params, 0/0 flops, Add, 0:3x3x3x6|1:1)\n DW/Initializer/random_normal/RandomStandardNormal (0/0 params, 0/0 flops, RandomStandardNormal, 0:4)\n DW/Initializer/random_normal/mean (0/0 params, 0/0 flops, Const, )\n DW/Initializer/random_normal/mul (0/0 params, 0/0 flops, Mul, 0:3x3x3x6|1:1)\n DW/Initializer/random_normal/shape (0/0 params, 0/0 flops, Const, )\n DW/Initializer/random_normal/stddev (0/0 params, 0/0 flops, Const, )\n DW/read (0/0 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Identity, 0:3x3x3x6)\n DW2 (2x2x6x12, 288/288 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|VariableV2|_trainable_variables, )\n DW2/Assign (0/0 params, 0/0 flops, Assign, 0:2x2x6x12|1:2x2x6x12)\n DW2/Initializer (0/0 params, 0/0 flops, _kTFScopeParent, )\n DW2/Initializer/random_normal (0/0 params, 0/0 flops, Add, 0:2x2x6x12|1:1)\n DW2/Initializer/random_normal/RandomStandardNormal (0/0 params, 0/0 flops, RandomStandardNormal, 0:4)\n DW2/Initializer/random_normal/mean (0/0 params, 0/0 flops, Const, )\n DW2/Initializer/random_normal/mul (0/0 params, 0/0 flops, Mul, 0:2x2x6x12|1:1)\n DW2/Initializer/random_normal/shape (0/0 params, 0/0 flops, Const, )\n DW2/Initializer/random_normal/stddev (0/0 params, 0/0 flops, Const, )\n DW2/read (0/0 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Identity, 0:2x2x6x12)\n ScalarW (1, 1/1 params, 0/0 flops, VariableV2|_trainable_variables, )\n ScalarW/Assign (0/0 params, 0/0 flops, Assign, 0:1|1:1)\n ScalarW/Initializer (0/0 params, 0/0 flops, _kTFScopeParent, )\n ScalarW/Initializer/random_normal (0/0 params, 0/0 flops, Add, 0:1|1:1)\n ScalarW/Initializer/random_normal/RandomStandardNormal (0/0 params, 0/0 flops, RandomStandardNormal, 0:0)\n ScalarW/Initializer/random_normal/mean (0/0 params, 0/0 flops, Const, )\n ScalarW/Initializer/random_normal/mul (0/0 params, 0/0 flops, Mul, 0:1|1:1)\n ScalarW/Initializer/random_normal/shape (0/0 params, 0/0 flops, Const, )\n ScalarW/Initializer/random_normal/stddev (0/0 params, 0/0 flops, Const, )\n ScalarW/read (0/0 params, 0/0 flops, Identity, 0:1)\n init (0/0 params, 0/0 flops, NoOp, 0:1|1:3x3x3x6|2:2x2x6x12)\n zeros (0/0 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Const, )\n', + 'node name | # parameters | # float_ops | assigned devices | op types | op count (run|defined) | input shapes\n_TFProfRoot (--/451 params, --/10.44k flops, _kTFScopeParent, --/7|--/35, )\n Conv2D (0/0 params, 5.83k/5.83k flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Conv2D, 1/1|1/1, 0:2x6x6x3|1:3x3x3x6)\n Conv2D_1 (0/0 params, 4.61k/4.61k flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Conv2D, 1/1|1/1, 0:2x3x3x6|1:2x2x6x12)\n DW (3x3x3x6, 162/162 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|VariableV2|_trainable_variables, 1/2|1/10, )\n DW/Assign (0/0 params, 0/0 flops, Assign, 0/0|1/1, 0:3x3x3x6|1:3x3x3x6)\n DW/Initializer (0/0 params, 0/0 flops, _kTFScopeParent, 0/0|1/7, )\n DW/Initializer/random_normal (0/0 params, 0/0 flops, Add, 0/0|1/6, 0:3x3x3x6|1:1)\n DW/Initializer/random_normal/RandomStandardNormal (0/0 params, 0/0 flops, RandomStandardNormal, 0/0|1/1, 0:4)\n DW/Initializer/random_normal/mean (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n DW/Initializer/random_normal/mul (0/0 params, 0/0 flops, Mul, 0/0|1/1, 0:3x3x3x6|1:1)\n DW/Initializer/random_normal/shape (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n DW/Initializer/random_normal/stddev (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n DW/read (0/0 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Identity, 1/1|1/1, 0:3x3x3x6)\n DW2 (2x2x6x12, 288/288 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|VariableV2|_trainable_variables, 1/2|1/10, )\n DW2/Assign (0/0 params, 0/0 flops, Assign, 0/0|1/1, 0:2x2x6x12|1:2x2x6x12)\n DW2/Initializer (0/0 params, 0/0 flops, _kTFScopeParent, 0/0|1/7, )\n DW2/Initializer/random_normal (0/0 params, 0/0 flops, Add, 0/0|1/6, 0:2x2x6x12|1:1)\n DW2/Initializer/random_normal/RandomStandardNormal (0/0 params, 0/0 flops, RandomStandardNormal, 0/0|1/1, 0:4)\n DW2/Initializer/random_normal/mean (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n DW2/Initializer/random_normal/mul (0/0 params, 0/0 flops, Mul, 0/0|1/1, 0:2x2x6x12|1:1)\n DW2/Initializer/random_normal/shape (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n DW2/Initializer/random_normal/stddev (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n DW2/read (0/0 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Identity, 1/1|1/1, 0:2x2x6x12)\n ScalarW (1, 1/1 params, 0/0 flops, VariableV2|_trainable_variables, 0/0|1/10, )\n ScalarW/Assign (0/0 params, 0/0 flops, Assign, 0/0|1/1, 0:1|1:1)\n ScalarW/Initializer (0/0 params, 0/0 flops, _kTFScopeParent, 0/0|1/7, )\n ScalarW/Initializer/random_normal (0/0 params, 0/0 flops, Add, 0/0|1/6, 0:1|1:1)\n ScalarW/Initializer/random_normal/RandomStandardNormal (0/0 params, 0/0 flops, RandomStandardNormal, 0/0|1/1, 0:0)\n ScalarW/Initializer/random_normal/mean (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n ScalarW/Initializer/random_normal/mul (0/0 params, 0/0 flops, Mul, 0/0|1/1, 0:1|1:1)\n ScalarW/Initializer/random_normal/shape (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n ScalarW/Initializer/random_normal/stddev (0/0 params, 0/0 flops, Const, 0/0|1/1, )\n ScalarW/read (0/0 params, 0/0 flops, Identity, 0/0|1/1, 0:1)\n init (0/0 params, 0/0 flops, NoOp, 0/0|1/1, 0:1|1:3x3x3x6|2:2x2x6x12)\n zeros (0/0 params, 0/0 flops, /job:localhost/replica:0/task:0/cpu:0, /job:localhost/replica:0/task:0/cpu:0|Const, 1/1|1/1, )\n', f.read()) # pylint: enable=line-too-long @@ -143,12 +143,12 @@ class PrintModelAnalysisTest(test.TestCase): with gfile.Open(outfile, 'r') as f: lines = f.read().split('\n') result = '\n'.join([l[:min(len(l), 80)] for l in lines]) - self.assertEqual('node name | # parameters | # float_ops\n_TFProfRoot (--/2.84k params, --/54.08k flops)\n model_analyzer_testlib.py:58:BuildFullModel:seq.append(array_... (0/1.80k para\n model_analyzer_testlib.py:35:BuildSmallModel:image = array_ops... (0/0 param\n model_analyzer_testlib.py:39:BuildSmallModel:initializer=init_... (0/4 param\n model_analyzer_testlib.py:43:BuildSmallModel:initializer=init_... (0/648 par\n model_analyzer_testlib.py:44:BuildSmallModel:x = nn_ops.conv2d... (0/0 param\n model_analyzer_testlib.py:48:BuildSmallModel:initializer=init_... (0/1.15k p\n model_analyzer_testlib.py:49:BuildSmallModel:x = nn_ops.conv2d... (0/0 param\n model_analyzer_testlib.py:62:BuildFullModel:cell, array_ops.c... (0/1.04k para\n model_analyzer_testlib.py:64:BuildFullModel:target = array_op... (0/0 params, \n model_analyzer_testlib.py:65:BuildFullModel:loss = nn_ops.l2_... (0/0 params, \n model_analyzer_testlib.py:67:BuildFullModel:return sgd_op.min... (0/0 params, \n', + self.assertEqual('node name | # parameters | # float_ops\n_TFProfRoot (--/2.84k params, --/91.04k flops)\n model_analyzer_testlib.py:58:BuildFullModel:seq.append(array_... (0/1.80k para\n model_analyzer_testlib.py:35:BuildSmallModel:image = array_ops... (0/0 param\n model_analyzer_testlib.py:39:BuildSmallModel:initializer=init_... (0/4 param\n model_analyzer_testlib.py:43:BuildSmallModel:initializer=init_... (0/648 par\n model_analyzer_testlib.py:44:BuildSmallModel:x = nn_ops.conv2d... (0/0 param\n model_analyzer_testlib.py:48:BuildSmallModel:initializer=init_... (0/1.15k p\n model_analyzer_testlib.py:49:BuildSmallModel:x = nn_ops.conv2d... (0/0 param\n model_analyzer_testlib.py:62:BuildFullModel:cell, array_ops.c... (0/1.04k para\n model_analyzer_testlib.py:64:BuildFullModel:target = array_op... (0/0 params, \n model_analyzer_testlib.py:65:BuildFullModel:loss = nn_ops.l2_... (0/0 params, \n model_analyzer_testlib.py:67:BuildFullModel:return sgd_op.min... (0/0 params, \n', result) self.assertLess(0, tfprof_node.total_exec_micros) self.assertEqual(2844, tfprof_node.total_parameters) - self.assertEqual(54080, tfprof_node.total_float_ops) + self.assertEqual(91040, tfprof_node.total_float_ops) self.assertEqual(5, len(tfprof_node.children)) self.assertEqual('_TFProfRoot', tfprof_node.name) self.assertEqual( @@ -226,7 +226,7 @@ class PrintModelAnalysisTest(test.TestCase): def testOpView(self): ops.reset_default_graph() - opts = model_analyzer.TRAINABLE_VARS_PARAMS_STAT_OPTIONS + opts = model_analyzer.TRAINABLE_VARS_PARAMS_STAT_OPTIONS.copy() outfile = os.path.join(test.get_temp_dir(), 'dump') opts['output'] = 'file:outfile=' + outfile opts['account_type_regexes'] = ['.*'] @@ -250,8 +250,8 @@ class PrintModelAnalysisTest(test.TestCase): with gfile.Open(outfile, 'r') as f: # pylint: disable=line-too-long self.assertEqual( - 'nodename|totalexecutiontime|acceleratorexecutiontime|cpuexecutiontime|#parameters|opoccurrence|input', - f.read().replace('\t', '').replace(' ', '')[0:100]) + 'nodename|totalexecutiontime|acceleratorexecutiontime|cpuexecutiontime|#parameters|opoccurrence(run|defined)|inputshapes\n', + f.read().replace('\t', '').replace(' ', '')[0:120]) # pylint: enable=line-too-long total_children = 0 |