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_alpha_values(self): a = ctcpp_alpha(np.log(self.Y), self.T) a_expected = np.array( [[.1, .08, 0, 0], [.7, .08, .048, 0], [0, .56, .192, 0], [0, .07, .284, .1048], [0, 0, .021, .2135]]).T self.assertTrue(np.allclose(np.exp(a), a_expected.reshape(4, 1, 5)))
def test_alpha_values_duplicate_label(self): T = [0, 0] a = ctcpp_alpha(np.log(self.Y), T) a_expected = np.array( [[.1, .08, 0, 0], [.7, .08, .048, 0], [0, .56, .192, 0], [0, 0, .168, .036], [0, 0, 0, .1176]]).T self.assertTrue(np.allclose(np.exp(a), a_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()))