From f3986dd392d0aeb534d71c7c3eb4c4102d5f7743 Mon Sep 17 00:00:00 2001 From: mattya Date: Mon, 3 Jul 2017 14:32:27 +0900 Subject: [PATCH] merge 2949 for v2 --- .../optimizers_tests/test_optimizers.py | 4 +- .../serializers_tests/test_hdf5.py | 18 ++- tests/chainer_tests/test_link.py | 115 ++++++++++++++---- .../test_multiprocess_parallel_updater.py | 8 +- 4 files changed, 111 insertions(+), 34 deletions(-) diff --git a/tests/chainer_tests/optimizers_tests/test_optimizers.py b/tests/chainer_tests/optimizers_tests/test_optimizers.py index b4fce9797aa3..d356f6e02138 100644 --- a/tests/chainer_tests/optimizers_tests/test_optimizers.py +++ b/tests/chainer_tests/optimizers_tests/test_optimizers.py @@ -23,7 +23,9 @@ class TestOptimizerHyperparameter(unittest.TestCase): def setUp(self): - self.target = chainer.Link(w=()) + self.target = chainer.Link() + with self.target.init_scope(): + self.target.w = chainer.Parameter() def create(self, *args, **kwargs): self.optimizer = self.impl(*args, **kwargs) diff --git a/tests/chainer_tests/serializers_tests/test_hdf5.py b/tests/chainer_tests/serializers_tests/test_hdf5.py index 063b811cbd9b..b6115b81ebbe 100644 --- a/tests/chainer_tests/serializers_tests/test_hdf5.py +++ b/tests/chainer_tests/serializers_tests/test_hdf5.py @@ -221,8 +221,13 @@ def setUp(self): os.close(fd) self.temp_file_path = path - child = link.Chain(linear=links.Linear(2, 3)) - parent = link.Chain(linear=links.Linear(3, 2), child=child) + child = link.Chain() + with child.init_scope(): + child.linear = links.Linear(2, 3) + parent = link.Chain() + with parent.init_scope(): + parent.linear = links.Linear(3, 2) + parent.child = child hdf5.save_hdf5(self.temp_file_path, parent) self.source = parent @@ -236,8 +241,13 @@ def tearDown(self): os.remove(self.temp_file_path) def test_deserialize_hierarchy(self): - child = link.Chain(linear2=links.Linear(2, 3)) - target = link.Chain(linear=links.Linear(3, 2), child=child) + child = link.Chain() + with child.init_scope(): + child.linear2 = links.Linear(2, 3) + target = link.Chain() + with target.init_scope(): + target.linear = links.Linear(3, 2) + target.child = child target_child_W = numpy.copy(child.linear2.W.data) target_child_b = numpy.copy(child.linear2.b.data) self.deserializer.load(target) diff --git a/tests/chainer_tests/test_link.py b/tests/chainer_tests/test_link.py index 579d1059bf16..69ee6c4073e4 100644 --- a/tests/chainer_tests/test_link.py +++ b/tests/chainer_tests/test_link.py @@ -240,7 +240,12 @@ def test_copyparams(self): gy = self.link.y.grad.copy() gu = self.link.u.grad.copy() - l = chainer.Link(x=(2, 3), y=2, u=(2, 3), v=(3, 2)) + l = chainer.Link() + with l.init_scope(): + l.x = chainer.Parameter(shape=(2, 3)) + l.y = chainer.Parameter(shape=2) + l.u = chainer.Parameter(shape=(2, 3)) + l.v = chainer.Parameter(shape=(3, 2)) l.x.data.fill(2) l.x.grad.fill(3) l.y.data.fill(4) @@ -283,7 +288,12 @@ def test_zerograds(self): numpy.testing.assert_array_equal(self.link.v.grad, gv_expect) def test_addgrads(self): - l = chainer.Link(x=(2, 3), y=2, u=(2, 3), v=None) + l = chainer.Link() + with l.init_scope(): + l.x = chainer.Parameter(shape=(2, 3)) + l.y = chainer.Parameter(shape=2) + l.u = chainer.Parameter(shape=(2, 3)) + l.v = chainer.Parameter() l.x.grad.fill(1) l.y.grad.fill(2) l.u.grad.fill(3) @@ -304,7 +314,10 @@ def test_addgrads(self): def test_serialize(self): serializer = mock.MagicMock(return_value=3) - l = chainer.Link(x=(2, 3), y=2) + l = chainer.Link() + with l.init_scope(): + l.x = chainer.Parameter(shape=(2, 3)) + l.y = chainer.Parameter(shape=2) l.add_persistent('z', 1) l.serialize(serializer) self.assertEqual(serializer.call_count, 3) @@ -315,7 +328,10 @@ def test_serialize(self): def test_serialize_param_shape_placeholder(self): serializer = mock.MagicMock(return_value=3) - l = chainer.Link(y=2, x=None) + l = chainer.Link() + with l.init_scope(): + l.y = chainer.Parameter(shape=2) + l.x = chainer.Parameter() l.x.initialize((2, 3)) l.add_persistent('z', 1) l.serialize(serializer) @@ -328,7 +344,9 @@ def test_serialize_param_shape_placeholder(self): def test_serialize_deserialize_to_uninitialized_param(self): ret = numpy.random.rand(2, 3).astype('f') serializer = mock.MagicMock(return_value=ret) - l = chainer.Link(x=None) + l = chainer.Link() + with l.init_scope(): + l.x = chainer.Parameter() l.serialize(serializer) self.assertEqual(serializer.call_count, 1) serializer.assert_any_call('x', None) @@ -573,11 +591,23 @@ def test_children(self): self.assertEqual({id(c) for c in children}, {id(self.c1), id(self.l3)}) def test_copyparams(self): - l1 = chainer.Link(x=(2, 3)) - l2 = chainer.Link(x=2) - l3 = chainer.Link(x=3) - c1 = chainer.Chain(l1=l1, l2=l2) - c2 = chainer.Chain(c1=c1, l3=l3) + l1 = chainer.Link() + with l1.init_scope(): + l1.x = chainer.Parameter(shape=(2, 3)) + l2 = chainer.Link() + with l2.init_scope(): + l2.x = chainer.Parameter(shape=2) + l3 = chainer.Link() + with l3.init_scope(): + l3.x = chainer.Parameter(shape=3) + c1 = chainer.Chain() + with c1.init_scope(): + c1.l1 = l1 + c1.l2 = l2 + c2 = chainer.Chain() + with c2.init_scope(): + c2.c1 = c1 + c2.l3 = l3 l1.x.data.fill(0) l2.x.data.fill(1) l3.x.data.fill(2) @@ -601,11 +631,23 @@ def test_zerograds(self): numpy.testing.assert_array_equal(self.l3.x.grad, numpy.zeros(3)) def test_addgrads(self): - l1 = chainer.Link(x=(2, 3)) - l2 = chainer.Link(x=2) - l3 = chainer.Link(x=3) - c1 = chainer.Chain(l1=l1, l2=l2) - c2 = chainer.Chain(c1=c1, l3=l3) + l1 = chainer.Link() + with l1.init_scope(): + l1.x = chainer.Parameter(shape=(2, 3)) + l2 = chainer.Link() + with l2.init_scope(): + l2.x = chainer.Parameter(shape=2) + l3 = chainer.Link() + with l3.init_scope(): + l3.x = chainer.Parameter(shape=3) + c1 = chainer.Chain() + with c1.init_scope(): + c1.l1 = l1 + c1.l2 = l2 + c2 = chainer.Chain() + with c2.init_scope(): + c2.c1 = c1 + c2.l3 = l3 l1.x.grad.fill(1) l2.x.grad.fill(2) l3.x.grad.fill(3) @@ -637,9 +679,16 @@ def test_serialize(self): class TestChainList(unittest.TestCase): def setUp(self): - self.l1 = chainer.Link(x=(2, 3), y=None) - self.l2 = chainer.Link(x=2) - self.l3 = chainer.Link(x=3) + self.l1 = chainer.Link() + with self.l1.init_scope(): + self.l1.x = chainer.Parameter(shape=(2, 3)) + self.l1.y = chainer.Parameter() + self.l2 = chainer.Link() + with self.l2.init_scope(): + self.l2.x = chainer.Parameter(shape=2) + self.l3 = chainer.Link() + with self.l3.init_scope(): + self.l3.x = chainer.Parameter(shape=3) self.c1 = chainer.ChainList(self.l1) self.c1.add_link(self.l2) self.c2 = chainer.ChainList(self.c1) @@ -834,9 +883,16 @@ def test_children(self): (id(self.l1), id(self.l2))) def test_copyparams(self): - l1 = chainer.Link(x=(2, 3), y=None) - l2 = chainer.Link(x=2) - l3 = chainer.Link(x=3) + l1 = chainer.Link() + with l1.init_scope(): + l1.x = chainer.Parameter(shape=(2, 3)) + l1.y = chainer.Parameter() + l2 = chainer.Link() + with l2.init_scope(): + l2.x = chainer.Parameter(shape=2) + l3 = chainer.Link() + with l3.init_scope(): + l3.x = chainer.Parameter(shape=3) c1 = chainer.ChainList(l1, l2) c2 = chainer.ChainList(c1, l3) l1.x.data.fill(0) @@ -866,9 +922,16 @@ def test_cleargrads(self): self.assertIsNone(self.l1.y.grad) def test_addgrads(self): - l1 = chainer.Link(x=(2, 3), y=(2, 3)) - l2 = chainer.Link(x=2) - l3 = chainer.Link(x=3) + l1 = chainer.Link() + with self.l1.init_scope(): + l1.x = chainer.Parameter(shape=(2, 3)) + l1.y = chainer.Parameter(shape=(2, 3)) + l2 = chainer.Link() + with l2.init_scope(): + l2.x = chainer.Parameter(shape=2) + l3 = chainer.Link() + with l3.init_scope(): + l3.x = chainer.Parameter(shape=3) c1 = chainer.ChainList(l1, l2) c2 = chainer.ChainList(c1, l3) l1.x.grad.fill(1) @@ -888,7 +951,9 @@ def test_addgrads(self): numpy.testing.assert_array_equal(self.l3.x.grad, numpy.zeros(3)) def test_serialize(self): - l1 = chainer.Link(y=(1, 1)) + l1 = chainer.Link() + with l1.init_scope(): + l1.y = chainer.Parameter(shape=(1, 1)) l2 = chainer.Link() with l2.init_scope(): diff --git a/tests/chainer_tests/training_tests/updaters_tests/test_multiprocess_parallel_updater.py b/tests/chainer_tests/training_tests/updaters_tests/test_multiprocess_parallel_updater.py index 330f5e13c815..ffa3b7b9ccb3 100644 --- a/tests/chainer_tests/training_tests/updaters_tests/test_multiprocess_parallel_updater.py +++ b/tests/chainer_tests/training_tests/updaters_tests/test_multiprocess_parallel_updater.py @@ -15,10 +15,10 @@ class SimpleNet(chainer.Chain): insize = 5 def __init__(self): - super(SimpleNet, self).__init__( - conv=chainer.links.Convolution2D(2, 2, 3), - fc=chainer.links.Linear(18, 2), - ) + super(SimpleNet, self).__init__() + with self.init_scope(): + self.conv = chainer.links.Convolution2D(2, 2, 3) + self.fc = chainer.links.Linear(18, 2) self.train = True def clear(self):