Пример #1
0
	def test_gradient(self):
		h = 0.01

		slstm = SLSTM(
			num_rows=4,
			num_cols=3,
			batch_size=10,
			num_channels=3)

		# generate data
		inputs = randn(slstm.batch_size, slstm.num_rows, slstm.num_cols, slstm.num_channels)

		# assume we want to minimize squared hidden unit activity
		grad = slstm.backward(slstm.forward(inputs))

		params = deepcopy(slstm.parameters())
		params_copy = deepcopy(params)

		# numerical gradient
		grad_n = {}
		for key in grad:
			grad_n[key] = empty_like(grad[key])

			for i in range(grad_n[key].size):
				# increase parameter value
				params_copy[key].ravel()[i] = params[key].ravel()[i] + h

				slstm.set_parameters(params_copy)
				loss_p = sum(square(slstm.forward(inputs))) / 2.

				# decrease parameter value
				params_copy[key].ravel()[i] = params[key].ravel()[i] - h

				slstm.set_parameters(params_copy)
				loss_n = sum(square(slstm.forward(inputs))) / 2.

				# reset parameter value
				params_copy[key].ravel()[i] = params[key].ravel()[i]

				# estimate gradient
				grad_n[key].ravel()[i] = (loss_p - loss_n) / (2. * h)

			self.assertLess(max(abs(grad_n[key] - grad[key])), 1e-3)
Пример #2
0
    def test_gradient(self):
        h = 0.01

        slstm = SLSTM(num_rows=4, num_cols=3, batch_size=10, num_channels=3)

        # generate data
        inputs = randn(slstm.batch_size, slstm.num_rows, slstm.num_cols,
                       slstm.num_channels)

        # assume we want to minimize squared hidden unit activity
        grad = slstm.backward(slstm.forward(inputs))

        params = deepcopy(slstm.parameters())
        params_copy = deepcopy(params)

        # numerical gradient
        grad_n = {}
        for key in grad:
            grad_n[key] = empty_like(grad[key])

            for i in range(grad_n[key].size):
                # increase parameter value
                params_copy[key].ravel()[i] = params[key].ravel()[i] + h

                slstm.set_parameters(params_copy)
                loss_p = sum(square(slstm.forward(inputs))) / 2.

                # decrease parameter value
                params_copy[key].ravel()[i] = params[key].ravel()[i] - h

                slstm.set_parameters(params_copy)
                loss_n = sum(square(slstm.forward(inputs))) / 2.

                # reset parameter value
                params_copy[key].ravel()[i] = params[key].ravel()[i]

                # estimate gradient
                grad_n[key].ravel()[i] = (loss_p - loss_n) / (2. * h)

            self.assertLess(max(abs(grad_n[key] - grad[key])), 1e-3)
Пример #3
0
    def test_pickle(self):
        filepath = mkstemp()[1]

        slstm0 = SLSTM(8, 12, 2, 13, 42)

        # store model
        with open(filepath, 'w') as handle:
            dump(slstm0, handle)

        # load model
        with open(filepath) as handle:
            slstm1 = load(handle)

        self.assertEqual(slstm0.num_rows, slstm1.num_rows)
        self.assertEqual(slstm0.num_cols, slstm1.num_cols)
        self.assertEqual(slstm0.num_channels, slstm1.num_channels)
        self.assertEqual(slstm0.num_hiddens, slstm1.num_hiddens)
        self.assertEqual(slstm0.batch_size, slstm1.batch_size)

        params0 = slstm0.parameters()
        params1 = slstm1.parameters()

        for key in params0:
            self.assertTrue(all(params0[key] == params1[key]))
Пример #4
0
	def test_pickle(self):
		filepath = mkstemp()[1]

		slstm0 = SLSTM(8, 12, 2, 13, 42)

		# store model
		with open(filepath, 'w') as handle:
			dump(slstm0, handle)

		# load model
		with open(filepath) as handle:
			slstm1 = load(handle)

		self.assertEqual(slstm0.num_rows, slstm1.num_rows)
		self.assertEqual(slstm0.num_cols, slstm1.num_cols)
		self.assertEqual(slstm0.num_channels, slstm1.num_channels)
		self.assertEqual(slstm0.num_hiddens, slstm1.num_hiddens)
		self.assertEqual(slstm0.batch_size, slstm1.batch_size)

		params0 = slstm0.parameters()
		params1 = slstm1.parameters()

		for key in params0:
			self.assertTrue(all(params0[key] == params1[key]))