Beispiel #1
0
    def _run_minibatch(self, y, mask):
        D = self.D.copy()
        start_iter = 31
        it, D, x = nmf.solve(
                     self.y, D, x=None, tol=1.0e-6,
                     minibatch=30, maxiter=start_iter,
                     method=self.method,
                     likelihood=self.likelihood, mask=mask,
                     random_seed=0)
        start_error = self.error(x, D, mask=mask)
        assert not allclose(x, xp.zeros_like(x), atol=1.0e-5)

        # make sure the iteration reduces the error
        errors = []
        for i in range(10):
            print('trial ', i)
            it, D, x = nmf.solve(
                         self.y, D, x=x, tol=1.0e-6,
                         minibatch=30, maxiter=self.maxiter,
                         method=self.method,
                         likelihood=self.likelihood, mask=mask,
                         random_seed=0)
            # just make sure the loss is decreasing
            error = self.error(x, D, mask=mask)
            assert not allclose(x, xp.zeros_like(x), atol=1.0e-5)
            assert error < start_error
            errors.append(error)
        # make sure errors are decreasing in average
        errors = np.array(errors)
        assert np.mean(errors[:4]) > np.mean(errors[-4:])
Beispiel #2
0
 def test_minibatch_mask(self, method, all_xp=False):
     D = xp.array(self.D)
     y = xp.array(self.y) if all_xp else self.y
     mask = xp.array(self.mask) if all_xp else self.mask
     it, D, x = nmf.solve(y, D, tol=1.0e-10,
                          method=method, maxiter=self.maxiter,
                          mask=mask, minibatch=self.minibatch)
Beispiel #3
0
 def run_fullbatch(self, mask):
     D = self.D.copy()
     it, D, x = nmf.solve(self.y, D, x=None, tol=1.0e-6,
                          minibatch=None, maxiter=self.maxiter,
                          method=self.method,
                          likelihood=self.likelihood, mask=mask,
                          random_seed=0)
     assert it < self.maxiter - 1
     self.assert_minimum(x, D, tol=1.0e-5, n=100, mask=mask)
     assert not allclose(x, xp.zeros_like(x), atol=1.0e-5)
Beispiel #4
0
 def test_mask(self, method):
     it, D, x = nmf.solve(xp.array(self.y), xp.array(self.D), tol=1.0e-10,
                          method=method, maxiter=self.maxiter,
                          mask=xp.array(self.mask))
Beispiel #5
0
 def test_minibatch(self, method, all_xp=False):
     D = xp.array(self.D, dtype=np.float32)
     y = xp.array(self.y, dtype=np.float32) if all_xp else self.y
     it, D, x = nmf.solve(y, D, tol=1.0e-10,
                          method=method, maxiter=self.maxiter,
                          minibatch=self.minibatch)