提交 28c4443c 编写于 作者: Q qiaolongfei

add test for remove duplicated init op

上级 8e9f338c
...@@ -6,4 +6,4 @@ add_subdirectory(pybind) ...@@ -6,4 +6,4 @@ add_subdirectory(pybind)
add_subdirectory(string) add_subdirectory(string)
add_subdirectory(recordio) add_subdirectory(recordio)
# NOTE: please add subdirectory inference at last. # NOTE: please add subdirectory inference at last.
add_subdirectory(inference) #add_subdirectory(inference)
...@@ -72,9 +72,10 @@ def _is_inited_by(block, var, init_op_types): ...@@ -72,9 +72,10 @@ def _is_inited_by(block, var, init_op_types):
def _is_duplicated_init_op(op1, op2): def _is_duplicated_init_op(op1, op2):
if op1.block == op2.block and \ if op1.block == op2.block and \
op1.type == op2.type and \ op1.type == op2.type and \
op1.input_arg_names == op2.output_arg_names and \ op1.input_arg_names == op2.input_arg_names and \
op1.output_arg_names == op2.output_arg_names and \
op1.idx != op2.idx and \ op1.idx != op2.idx and \
op1.all_attrs == op2.all_attrs: op1.all_attrs() == op2.all_attrs():
return True return True
return False return False
......
...@@ -27,12 +27,13 @@ class TestConstantInitializer(unittest.TestCase): ...@@ -27,12 +27,13 @@ class TestConstantInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
block.create_parameter( for _ in range(2):
dtype="float32", block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.ConstantInitializer()) name="param",
initializer=initializer.ConstantInitializer())
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'fill_constant') self.assertEqual(init_op.type, 'fill_constant')
...@@ -43,12 +44,13 @@ class TestConstantInitializer(unittest.TestCase): ...@@ -43,12 +44,13 @@ class TestConstantInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
block.create_parameter( for _ in range(2):
dtype="float32", block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.ConstantInitializer(2.3)) name="param",
initializer=initializer.ConstantInitializer(2.3))
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'fill_constant') self.assertEqual(init_op.type, 'fill_constant')
...@@ -61,12 +63,13 @@ class TestUniformInitializer(unittest.TestCase): ...@@ -61,12 +63,13 @@ class TestUniformInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
block.create_parameter( for _ in range(2):
dtype="float32", block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.UniformInitializer()) name="param",
initializer=initializer.UniformInitializer())
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'uniform_random') self.assertEqual(init_op.type, 'uniform_random')
...@@ -80,18 +83,19 @@ class TestUniformInitializer(unittest.TestCase): ...@@ -80,18 +83,19 @@ class TestUniformInitializer(unittest.TestCase):
program = framework.Program() program = framework.Program()
program.random_seed = 123 program.random_seed = 123
block = program.global_block() block = program.global_block()
block.create_parameter( for _ in range(2):
dtype="float32", block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.UniformInitializer()) name="param",
block.create_parameter( initializer=initializer.UniformInitializer())
dtype="float32", block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.UniformInitializer(seed=456)) name="param",
initializer=initializer.UniformInitializer(seed=456))
init_op = block.ops[1] init_op = block.ops[1]
self.assertEqual(init_op.attr("seed"), 123) self.assertEqual(init_op.attr("seed"), 123)
init_op1 = block.ops[0] init_op1 = block.ops[0]
...@@ -102,12 +106,13 @@ class TestUniformInitializer(unittest.TestCase): ...@@ -102,12 +106,13 @@ class TestUniformInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
block.create_parameter( for _ in range(2):
dtype="float32", block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.UniformInitializer(-4.2, 3.1, 123)) name="param",
initializer=initializer.UniformInitializer(-4.2, 3.1, 123))
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'uniform_random') self.assertEqual(init_op.type, 'uniform_random')
...@@ -115,6 +120,32 @@ class TestUniformInitializer(unittest.TestCase): ...@@ -115,6 +120,32 @@ class TestUniformInitializer(unittest.TestCase):
self.assertAlmostEqual(init_op.attr('max'), 3.1, delta=DELTA) self.assertAlmostEqual(init_op.attr('max'), 3.1, delta=DELTA)
self.assertEqual(init_op.attr('seed'), 123) self.assertEqual(init_op.attr('seed'), 123)
def test_uniform_initializer_two_op(self):
"""Test uniform initializer with supplied attributes
"""
program = framework.Program()
block = program.global_block()
for i in range(2):
block.create_parameter(
dtype="float32",
shape=[5, 10],
lod_level=0,
name="param",
initializer=initializer.UniformInitializer(-4.2, float(i), 123))
self.assertEqual(len(block.ops), 2)
init_op0 = block.ops[0]
self.assertEqual(init_op0.type, 'uniform_random')
self.assertAlmostEqual(init_op0.attr('min'), -4.2, delta=DELTA)
self.assertAlmostEqual(init_op0.attr('max'), 1.0, delta=DELTA)
self.assertEqual(init_op0.attr('seed'), 123)
self.assertEqual(len(block.ops), 2)
init_op1 = block.ops[1]
self.assertEqual(init_op1.type, 'uniform_random')
self.assertAlmostEqual(init_op1.attr('min'), -4.2, delta=DELTA)
self.assertAlmostEqual(init_op1.attr('max'), 0.0, delta=DELTA)
self.assertEqual(init_op1.attr('seed'), 123)
class TestNormalInitializer(unittest.TestCase): class TestNormalInitializer(unittest.TestCase):
def test_normal_initializer_default_value(self): def test_normal_initializer_default_value(self):
...@@ -122,12 +153,13 @@ class TestNormalInitializer(unittest.TestCase): ...@@ -122,12 +153,13 @@ class TestNormalInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
block.create_parameter( for _ in range(2):
dtype="float32", block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.NormalInitializer()) name="param",
initializer=initializer.NormalInitializer())
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'gaussian_random') self.assertEqual(init_op.type, 'gaussian_random')
...@@ -140,12 +172,13 @@ class TestNormalInitializer(unittest.TestCase): ...@@ -140,12 +172,13 @@ class TestNormalInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
block.create_parameter( for _ in range(2):
dtype="float32", block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.NormalInitializer(2.3, 1.9, 123)) name="param",
initializer=initializer.NormalInitializer(2.3, 1.9, 123))
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'gaussian_random') self.assertEqual(init_op.type, 'gaussian_random')
...@@ -161,12 +194,13 @@ class TestXavierInitializer(unittest.TestCase): ...@@ -161,12 +194,13 @@ class TestXavierInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
param = block.create_parameter( for _ in range(2):
dtype="float32", param = block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.XavierInitializer()) name="param",
initializer=initializer.XavierInitializer())
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'uniform_random') self.assertEqual(init_op.type, 'uniform_random')
...@@ -181,12 +215,13 @@ class TestXavierInitializer(unittest.TestCase): ...@@ -181,12 +215,13 @@ class TestXavierInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
param = block.create_parameter( for _ in range(2):
dtype="float32", param = block.create_parameter(
shape=[5, 10, 15, 20], dtype="float32",
lod_level=0, shape=[5, 10, 15, 20],
name="param", lod_level=0,
initializer=initializer.XavierInitializer()) name="param",
initializer=initializer.XavierInitializer())
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'uniform_random') self.assertEqual(init_op.type, 'uniform_random')
...@@ -203,12 +238,13 @@ class TestXavierInitializer(unittest.TestCase): ...@@ -203,12 +238,13 @@ class TestXavierInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
param = block.create_parameter( for _ in range(2):
dtype="float32", param = block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.XavierInitializer(uniform=False)) name="param",
initializer=initializer.XavierInitializer(uniform=False))
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'gaussian_random') self.assertEqual(init_op.type, 'gaussian_random')
...@@ -223,12 +259,13 @@ class TestXavierInitializer(unittest.TestCase): ...@@ -223,12 +259,13 @@ class TestXavierInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
param = block.create_parameter( for _ in range(2):
dtype="float32", param = block.create_parameter(
shape=[5, 10, 15, 20], dtype="float32",
lod_level=0, shape=[5, 10, 15, 20],
name="param", lod_level=0,
initializer=initializer.XavierInitializer(uniform=False)) name="param",
initializer=initializer.XavierInitializer(uniform=False))
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'gaussian_random') self.assertEqual(init_op.type, 'gaussian_random')
...@@ -244,13 +281,14 @@ class TestXavierInitializer(unittest.TestCase): ...@@ -244,13 +281,14 @@ class TestXavierInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
block.create_parameter( for _ in range(2):
dtype="float32", block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.XavierInitializer( name="param",
fan_in=12, fan_out=23, seed=134)) initializer=initializer.XavierInitializer(
fan_in=12, fan_out=23, seed=134))
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'uniform_random') self.assertEqual(init_op.type, 'uniform_random')
...@@ -267,12 +305,13 @@ class TestMSRAInitializer(unittest.TestCase): ...@@ -267,12 +305,13 @@ class TestMSRAInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
param = block.create_parameter( for _ in range(2):
dtype="float32", param = block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.MSRAInitializer()) name="param",
initializer=initializer.MSRAInitializer())
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'uniform_random') self.assertEqual(init_op.type, 'uniform_random')
...@@ -287,12 +326,13 @@ class TestMSRAInitializer(unittest.TestCase): ...@@ -287,12 +326,13 @@ class TestMSRAInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
param = block.create_parameter( for _ in range(2):
dtype="float32", param = block.create_parameter(
shape=[5, 10, 15, 20], dtype="float32",
lod_level=0, shape=[5, 10, 15, 20],
name="param", lod_level=0,
initializer=initializer.MSRAInitializer()) name="param",
initializer=initializer.MSRAInitializer())
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'uniform_random') self.assertEqual(init_op.type, 'uniform_random')
...@@ -308,12 +348,13 @@ class TestMSRAInitializer(unittest.TestCase): ...@@ -308,12 +348,13 @@ class TestMSRAInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
param = block.create_parameter( for _ in range(2):
dtype="float32", param = block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.MSRAInitializer(uniform=False)) name="param",
initializer=initializer.MSRAInitializer(uniform=False))
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'gaussian_random') self.assertEqual(init_op.type, 'gaussian_random')
...@@ -328,12 +369,13 @@ class TestMSRAInitializer(unittest.TestCase): ...@@ -328,12 +369,13 @@ class TestMSRAInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
param = block.create_parameter( for _ in range(2):
dtype="float32", param = block.create_parameter(
shape=[5, 10, 15, 20], dtype="float32",
lod_level=0, shape=[5, 10, 15, 20],
name="param", lod_level=0,
initializer=initializer.MSRAInitializer(uniform=False)) name="param",
initializer=initializer.MSRAInitializer(uniform=False))
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'gaussian_random') self.assertEqual(init_op.type, 'gaussian_random')
...@@ -348,13 +390,14 @@ class TestMSRAInitializer(unittest.TestCase): ...@@ -348,13 +390,14 @@ class TestMSRAInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
block.create_parameter( for _ in range(2):
dtype="float32", block.create_parameter(
shape=[5, 10], dtype="float32",
lod_level=0, shape=[5, 10],
name="param", lod_level=0,
initializer=initializer.MSRAInitializer( name="param",
fan_in=12, seed=134)) initializer=initializer.MSRAInitializer(
fan_in=12, seed=134))
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'uniform_random') self.assertEqual(init_op.type, 'uniform_random')
...@@ -370,12 +413,13 @@ class TestMSRAInitializer(unittest.TestCase): ...@@ -370,12 +413,13 @@ class TestMSRAInitializer(unittest.TestCase):
""" """
program = framework.Program() program = framework.Program()
block = program.global_block() block = program.global_block()
block.create_parameter( for _ in range(2):
dtype="float32", block.create_parameter(
shape=[8, 1, 3, 3], dtype="float32",
lod_level=0, shape=[8, 1, 3, 3],
name="param", lod_level=0,
initializer=initializer.BilinearInitializer()) name="param",
initializer=initializer.BilinearInitializer())
self.assertEqual(len(block.ops), 1) self.assertEqual(len(block.ops), 1)
init_op = block.ops[0] init_op = block.ops[0]
self.assertEqual(init_op.type, 'assign_value') self.assertEqual(init_op.type, 'assign_value')
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册