def test6(self): # Original graph # data(1,64,1)-->Reduce(axis=-2,keep_dims=True, reduce_type=Sum)-->data(1,1,1) # # Reference graph # data(1,61,1)->Reshape(1,1,64,1)->Pool(1,1,1,1)->Reshape(1,1,1)->Power(scale=64) # graph = build_graph(nodes_attributes, [('placeholder_1_data', 'reduce_1'), ('reduce_1', 'reduce_1_data'), ('reduce_1_data', 'concat'), ], {'placeholder_1_data': {'shape': np.array([1, 64, 1])}, 'reduce_1': {'axis': np.array([-2]), 'keep_dims': True, 'reduce_type': 'Sum'}, 'reduce_1_data': {'shape': np.array([1, 1, 1])}, }, nodes_with_edges_only=True) graph.graph['layout'] = 'NCHW' graph_ref = build_graph(nodes_attributes, [('placeholder_1_data', 'reshape_1'), ('reshape_1', 'reshape_1_data'), ('reshape_1_data', 'pooling'), ('pooling', 'pooling_data'), ('pooling_data', 'reshape_2'), ('reshape_2', 'reshape_2_data'), ('reshape_2_data', 'power'), ('power', 'power_data'), ('power_data', 'concat'), ], {'placeholder_1_data': {'shape': np.array([1, 64, 1])}, 'reshape_1': {'dim': np.array([1, 1, 64, 1])}, 'reshape_1_data': {'shape': np.array([1, 1, 64, 1])}, 'pooling': {'window': np.array([1, 1, 64, 1])}, 'pooling_data': {'shape': np.array([1, 1, 1, 1])}, 'reshape_2': {'dim': np.array([1, 1, 1])}, 'reshape_2_data': {'shape': np.array([1, 1, 1])}, 'power': {'scale': 64.0}, 'power_data': {'shape': np.array([1, 1, 1])}, }, nodes_with_edges_only=True) pattern = ReduceReplacer() pattern.find_and_replace_pattern(graph) (flag, resp) = compare_graphs(graph, graph_ref, 'concat', check_op_attrs=True) self.assertTrue(flag, resp)
def test5(self): # Original graph # data(1, 16, 64, 64, 64, 4)-->Reduce(axis=[5],keep_dims=False)-->data(1, 16, 64, 64, 64) # # Reference graph # data(1, 16, 64, 64, 64, 4)->Reshape(1*16*64*64, 64, 4, 1)->Pool(1, 1, 4, 1)->Reshape(1, 16, 64, 64, 64) # graph = build_graph(nodes_attributes, [('placeholder_1_data', 'reduce_1'), ('reduce_1', 'reduce_1_data'), ('reduce_1_data', 'concat'), ], {'placeholder_1_data': {'shape': np.array([1, 16, 64, 64, 64, 4])}, 'reduce_1': {'axis': np.array([5]), 'keep_dims': False, 'reduce_type': 'max'}, 'reduce_1_data': {'shape': np.array([1, 16, 64, 64, 64])}, }, nodes_with_edges_only=True) graph.graph['layout'] = 'NCHW' graph_ref = build_graph(nodes_attributes, [('placeholder_1_data', 'reshape_1'), ('reshape_1', 'reshape_1_data'), ('reshape_1_data', 'pooling'), ('pooling', 'pooling_data'), ('pooling_data', 'reshape_2'), ('reshape_2', 'reshape_2_data'), ('reshape_2_data', 'concat'), ], {'placeholder_1_data': {'shape': np.array([1, 16, 64, 64, 64, 4])}, 'reshape_1': {'dim': np.array([65536, 64, 4, 1])}, 'reshape_1_data': {'shape': np.array([65536, 64, 4, 1])}, 'pooling': {'window': np.array([1, 1, 4, 1])}, 'pooling_data': {'shape': np.array([65536, 64, 1, 1])}, 'reshape_2': {'dim': np.array([1, 16, 64, 64, 64])}, 'reshape_2_data': {'shape': np.array([1, 16, 64, 64, 64])}, }, nodes_with_edges_only=True) pattern = ReduceReplacer() pattern.find_and_replace_pattern(graph) (flag, resp) = compare_graphs(graph, graph_ref, 'concat', check_op_attrs=True) self.assertTrue(flag, resp)