示例#1
0
    def test_addgrads(self):
        l1 = links.Linear(2, 3)
        l2 = links.Linear(3, 2)
        l3 = links.Linear(2, 3)
        s1 = sequential.Sequential(l1, l2)
        s2 = sequential.Sequential(s1, l3)
        l1.b.grad.fill(1)
        l2.W.grad.fill(2)
        l2.b.grad.fill(3)
        l3.W.grad.fill(4)
        l3.b.grad.fill(5)
        l1.W.grad.fill(6)

        self.l1.b.grad.fill(-1)
        self.l2.W.grad.fill(-2)
        self.l2.b.grad.fill(-3)
        self.l3.W.grad.fill(-4)
        self.l3.b.grad.fill(-5)
        self.l1.W.cleargrad()

        self.s2.addgrads(s2)
        numpy.testing.assert_array_equal(self.l1.b.grad, numpy.zeros((3,)))
        numpy.testing.assert_array_equal(self.l1.W.grad, l1.W.grad)
        numpy.testing.assert_array_equal(self.l2.W.grad, numpy.zeros((2, 3)))
        numpy.testing.assert_array_equal(self.l2.b.grad, numpy.zeros((2,)))
        numpy.testing.assert_array_equal(self.l3.W.grad, numpy.zeros((3, 2)))
        numpy.testing.assert_array_equal(self.l3.b.grad, numpy.zeros((3,)))
示例#2
0
 def setUp(self):
     self.l1 = links.Linear(None, 3)
     self.l2 = links.Linear(3, 2)
     self.l3 = links.Linear(2, 3)
     # s1: l1 -> l2
     self.s1 = sequential.Sequential(self.l1)
     self.s1.append(self.l2)
     # s2: s1 (l1 -> l2) -> l3
     self.s2 = sequential.Sequential(self.s1)
     self.s2.append(self.l3)
示例#3
0
 def test_call_with_multiple_inputs(self):
     model = sequential.Sequential(
         lambda x, y: (x * 2, y * 3, x + y),
         lambda x, y, z: x + y + z
     )
     y = model(2, 3)
     self.assertEqual(y, 18)
示例#4
0
 def test_init(self):
     self.assertIs(self.s1[0], self.l1)
     self.assertEqual(self.l1.name, '0')
     self.assertIs(self.s2[0], self.s1)
     self.assertEqual(self.s1.name, '0')
     with self.assertRaises(ValueError):
         sequential.Sequential(0)
示例#5
0
 def test_extend(self):
     l1 = links.Linear(3, 2)
     l2 = links.Linear(2, 3)
     s3 = sequential.Sequential(l1, l2)
     self.s2.extend(s3)
     self.assertEqual(len(self.s2), 4)
     self.assertIs(self.s2[2], s3[0])
     self.assertIs(self.s2[3], s3[1])
示例#6
0
 def test_iadd(self):
     l4 = links.Linear(3, 1)
     self.s2 += sequential.Sequential(l4)
     self.assertIs(self.s2[0], self.s1)
     self.assertIs(self.s2[1], self.l3)
     self.assertIs(self.s2[2], l4)
     with self.assertRaises(ValueError):
         self.s2 += 0
示例#7
0
    def test_copyparams(self):
        l1 = links.Linear(None, 3)
        l2 = links.Linear(3, 2)
        l3 = links.Linear(2, 3)
        s1 = sequential.Sequential(l1, l2)
        s2 = sequential.Sequential(s1, l3)
        l1.b.data.fill(0)
        l2.W.data.fill(1)
        l2.b.data.fill(2)
        l3.W.data.fill(3)
        l3.b.data.fill(4)

        self.s2.copyparams(s2)

        numpy.testing.assert_array_equal(self.l1.b.data, l1.b.data)
        numpy.testing.assert_array_equal(self.l2.W.data, l2.W.data)
        numpy.testing.assert_array_equal(self.l2.b.data, l2.b.data)
        numpy.testing.assert_array_equal(self.l3.W.data, l3.W.data)
        numpy.testing.assert_array_equal(self.l3.b.data, l3.b.data)
示例#8
0
 def test_call(self):
     l1 = mock.MagicMock()
     l2 = mock.MagicMock()
     l3 = mock.MagicMock()
     model = sequential.Sequential(l1, l2, l3)
     x = numpy.arange(2).reshape(1, 2).astype('f')
     y = model(x)
     l1.assert_called_once()
     l2.assert_called_once()
     l3.assert_called_once()
     y = self.s1(x)
     self.assertIs(y.creator.inputs[1].data, self.l2.W.data)
示例#9
0
 def test_add(self):
     l1 = links.Linear(3, 2)
     l2 = functions.relu
     other = sequential.Sequential(l1, l2)
     added = self.s2 + other
     self.assertEqual(len(added), 4)
     self.assertIs(added[0], self.s1)
     self.assertIs(added[1], self.l3)
     self.assertIs(added[2], l1)
     self.assertIs(added[3], l2)
     with self.assertRaises(ValueError):
         self.s2 + 0
示例#10
0
    def test_serialize(self):
        l1 = links.Linear(None, 1)
        l2 = links.Linear(None, 3)
        with l2.init_scope():
            l2.x = variable.Parameter(0, 2)
        s1 = sequential.Sequential(l1, l2)
        mocks = {'0': mock.MagicMock(), '1': mock.MagicMock()}
        serializer = mock.MagicMock()
        serializer.__getitem__.side_effect = lambda k: mocks[k]
        serializer.return_value = None
        mocks['0'].return_value = None
        mocks['1'].return_value = None
        s1.serialize(serializer)

        self.assertEqual(serializer.call_count, 0)
        self.assertEqual(serializer.__getitem__.call_count, 2)
        serializer.__getitem__.assert_any_call('0')
        serializer.__getitem__.assert_any_call('1')

        mocks['0'].assert_any_call('W', None)
        mocks['0'].assert_any_call('b', l1.b.data)
        mocks['1'].assert_any_call('W', None)
        mocks['1'].assert_any_call('b', l2.b.data)
        mocks['1'].assert_any_call('x', l2.x.data)
示例#11
0
def from_dict(dict_array):
    seq = sequential.Sequential()
    seq.from_dict(dict_array)
    return seq
示例#12
0
def from_json(str):
    seq = sequential.Sequential()
    seq.from_json(str)
    return seq