def test_output_error_passed_back_in_the_chain_matches_input_dim(self): x, err, lr = np.array([1, 2, 3]), np.array([ 0.5, ]), 3 layer = Output(x) layer.solve_bwd(err, lr) self.assertEqual(layer.e.shape, layer.x.shape)
def test_output_gradient_descent(self): x, err, lr = np.array([1, 2, 3]), np.array([ 0.5, ]), 3 layer = Output(x) layer.solve_bwd(err, lr) expected = -lr * np.repeat(err, x.shape[0]) * layer.partial_s * layer.x self.assertTrue((expected == layer.delta_w).all())
def test_output_acc_error_to_be_passed_back_in_the_chain(self): x, err, lr = np.array([1, 2, 3]), np.array([ 0.5, ]), 3 layer = Output(x) layer.solve_bwd(err, lr) expected = np.repeat(err, x.shape[0]) * layer.partial_s * layer.w self.assertTrue((expected == layer.e).all())
def test_output_partial_s(self): x = np.array([1, 2, 3]) layer = Output(x) layer.solve_bwd(np.array([ 0.5, ])) partial_s = layer.s * (1 - layer.s) self.assertTrue((layer.partial_s == partial_s).all()) self.assertEqual(layer.partial_s.shape, x.shape)
def test_output_solve_bwd_check_args_shape(self): layer = Output(np.array([1, 2])) regex = 'The shape for net error should be 1' with self.assertRaisesRegex(ValueError, regex): layer.solve_bwd(np.array([1, 2]))
def test_output_value(self): layer = Output(np.array([1, 2, 3])) expected = 1 / (1 + np.exp(-layer.z)) self.assertTrue((layer.s == expected).all())
def test_output_solve_bwd_check_args_np(self): layer = Output(np.array([1, 2])) regex = 'The network error should be a numpy array' with self.assertRaisesRegex(TypeError, regex): layer.solve_bwd('void')
def test_output_for_output_layer_is_one(self): layer = Output(np.array([1, 2, 3])) self.assertEqual(layer.s.size, 1)
def test_z_is_a_dot_product_between_the_input_and_weight(self): i = np.array([1, 2, 3]) layer = Output(i) self.assertTrue((layer.z == np.dot(i, layer.w)).all())
def test_layer_x_is_input(self): i = np.array([1, 2, 3]) layer = Output(i) self.assertTrue((layer.x == i).all())
def test_output_requires_an_arg(self): with self.assertRaises(TypeError): Output()
def test_output_is_a_Layer_subclass(self): self.assertIsInstance(Output(np.array([1, 2])), Layer)