def test_error_equals_mean_pxz(self): a = ctcpp_alpha(np.log(self.Y), self.T) b = ctcpp_beta(np.log(self.Y), self.T) pzx = np.logaddexp.reduce(a + b, axis=2) error_expected = -pzx.mean() error_calc, d = CTC(self.Y, LabelingTargets([self.T], binarize_to=3)) self.assertEqual(error_calc, error_expected)
def test_beta_values(self): b = ctcpp_beta(np.log(self.Y), self.T) b_expected = np.array( [[.096, .06, 0, 0], [.441, .48, .2, 0], [0, .42, .2, 0], [0, .57, .9, 1], [0, 0, .7, 1]]).T self.assertTrue(np.allclose(np.exp(b), b_expected.reshape(4, 1, 5)))
def test_beta_values_duplicate_label(self): T = [0, 0] b = ctcpp_beta(np.log(self.Y), T) b_expected = np.array( [[.003, 0, 0, 0], [.219, .03, 0, 0], [0, .27, .1, 0], [0, .45, .8, 1], [0, 0, .7, 1]]).T self.assertTrue(np.allclose(np.exp(b), b_expected.reshape(4, 1, 5)))
def test_pxz_equal_for_all_t(self): a = ctcpp_alpha(np.log(self.Y), self.T) b = ctcpp_beta(np.log(self.Y), self.T) pxz = np.exp(a + b).T.sum(0) self.assertTrue(np.allclose(pxz, pxz.mean()))