def test_transform_in_place(self): transformer = ge.Transformer() def my_transform_op_handler_in_place(info, op): add_noise = op.name.startswith("Add") op = ge.transform.transform_op_in_place(info, op, detach_outputs=add_noise) if add_noise: # add some noise to op with info.graph_.as_default(): t = tf.add(tf.constant(1.0, shape=[10], name="Noise"), op.outputs[0], name="AddNoise") # return the "noisy" op return t.op else: return op transformer.transform_op_handler = my_transform_op_handler_in_place transformer(self.graph, self.graph, "", "") matcher0 = ge.matcher("AddNoise").input_ops( "Noise", ge.matcher("Add").input_ops("Const", "Input")) matcher1 = ge.matcher("AddNoise_1").input_ops( "Noise_1", ge.matcher("Add_1").input_ops("Const_1", matcher0)) matcher2 = ge.matcher("AddNoise_2").input_ops( "Noise_2", ge.matcher("Add_2").input_ops("Const_2", matcher1)) top = ge.select_ops("^AddNoise_2$", graph=self.graph)[0] self.assertTrue(matcher2(top))
def test_transform(self): transformer = ge.Transformer() def my_transform_op_handler(info, op, new_inputs): add_noise = op.name.startswith("Add") op_, op_outputs_ = ge.transform.copy_op_handler(info, op, new_inputs) if not add_noise: return op_, op_outputs_ # add some noise to op with info.graph_.as_default(): t_ = math_ops.add( constant_op.constant(1.0, shape=[10], name="Noise"), op_.outputs[0], name="AddNoise") # return the "noisy" op return op_, [t_] transformer.transform_op_handler = my_transform_op_handler graph = ops.Graph() transformer(self.graph, graph, "", "") matcher0 = match.OpMatcher("AddNoise").input_ops( "Noise", match.OpMatcher("Add").input_ops("Const", "Input")) matcher1 = match.OpMatcher("AddNoise_1").input_ops( "Noise_1", match.OpMatcher("Add_1").input_ops("Const_1", matcher0)) matcher2 = match.OpMatcher("AddNoise_2").input_ops( "Noise_2", match.OpMatcher("Add_2").input_ops("Const_2", matcher1)) top = ge.select_ops("^AddNoise_2$", graph=graph)[0] self.assertTrue(matcher2(top))
def test_select_ops(self): parameters = ( (("^foo/",), 7), (("^foo/bar/",), 4), (("^foo/bar/", "a"), 5),) for param, length in parameters: ops = ge.select_ops(*param, graph=self.graph) self.assertEqual(len(ops), length)
def capture_ops(): """Decorator to capture ops created in the block. with capture_ops() as ops: # create some ops print(ops) # => prints ops created. """ micros = int(time.perf_counter()*10**6) scope_name = str(micros) op_list = [] with tf.name_scope(scope_name): yield op_list g = tf.get_default_graph() op_list.extend(ge.select_ops(scope_name+"/.*", graph=g))
def capture_ops(): """Decorator to capture ops created in the block. with capture_ops() as ops: # create some ops print(ops) # => prints ops created. """ micros = int(time.time() * 10**6) scope_name = str(micros) op_list = [] with tf.name_scope(scope_name): yield op_list g = tf.get_default_graph() op_list.extend(ge.select_ops(scope_name + "/.*", graph=g))