def test_11(self): N = 63 M = 4 Nd = 8 D = cp.random.randn(Nd, Nd, M) X0 = cp.zeros((N, N, M)) xr = cp.random.randn(N, N, M) xp = cp.abs(xr) > 3 X0[xp] = cp.random.randn(X0[xp].size) S = cp.sum(ifftn( fftn(D, (N, N), (0, 1)) * fftn(X0, None, (0, 1)), None, (0, 1)).real, axis=2) lmbda = 1e-4 rho = 1e-1 opt = cbpdn.ConvBPDN.Options({ 'Verbose': False, 'MaxMainIter': 500, 'RelStopTol': 1e-3, 'rho': rho, 'AutoRho': { 'Enabled': False } }) b = cbpdn.ConvBPDN(D, S, lmbda, opt) b.solve() X1 = b.Y.squeeze() assert rrs(X0, X1) < 5e-5 Sr = b.reconstruct().squeeze() assert rrs(S, Sr) < 1e-4
def test_22(self): N = 32 M = 4 Nd = 8 D = cp.random.randn(Nd, Nd, M) D /= cp.sqrt(cp.sum(D**2, axis=(0, 1))) X0 = cp.zeros((N, N, M)) xr = cp.random.randn(N, N, M) xp = cp.abs(xr) > 3 X0[xp] = cp.random.randn(X0[xp].size) S = cp.sum(fftconv(D, X0), axis=2) lmbda = 1e-3 opt = cbpdn.ConvBPDN.Options( {'Verbose': False, 'MaxMainIter': 500, 'RelStopTol': 1e-5, 'rho': 5e-1, 'AutoRho': {'Enabled': False}}) bp = cbpdn.ConvBPDN(D, S, lmbda, opt) Xp = bp.solve() epsilon = cp.linalg.norm(bp.reconstruct(Xp).squeeze() - S) opt = cbpdn.ConvMinL1InL2Ball.Options( {'Verbose': False, 'MaxMainIter': 500, 'RelStopTol': 1e-5, 'rho': 2e2, 'RelaxParam': 1.0, 'AutoRho': {'Enabled': False}}) bc = cbpdn.ConvMinL1InL2Ball(D, S, epsilon=epsilon, opt=opt) Xc = bc.solve() assert cp.linalg.norm(Xp - Xc) / cp.linalg.norm(Xp) < 1e-3 assert cp.abs(cp.linalg.norm(Xp.ravel(), 1) - cp.linalg.norm(Xc.ravel(), 1)) < 1e-3
def test_05(self): N = 16 Nd = 5 K = 2 M = 4 D = cp.random.randn(Nd, Nd, M) s = cp.random.randn(N, N, K) lmbda = 1e-1 b = cbpdn.ConvBPDN(D, s, lmbda) assert b.cri.dimC == 0 assert b.cri.dimK == 1
def test_03(self): N = 16 Nd = 5 Cd = 3 M = 4 D = cp.random.randn(Nd, Nd, Cd, M) s = cp.random.randn(N, N, Cd) lmbda = 1e-1 b = cbpdn.ConvBPDN(D, s, lmbda) assert b.cri.dimC == 1 assert b.cri.dimK == 0
def test_01(self): N = 16 Nd = 5 Cs = 3 M = 4 D = cp.random.randn(Nd, Nd, M) s = cp.random.randn(N, N, Cs) lmbda = 1e-1 b = cbpdn.ConvBPDN(D, s, lmbda, dimK=0) assert b.cri.dimC == 1 assert b.cri.dimK == 0
def test_02(self): N = 16 Nd = 5 Cs = 3 K = 5 M = 4 D = cp.random.randn(Nd, Nd, M) s = cp.random.randn(N, N, Cs, K) lmbda = 1e-1 b = cbpdn.ConvBPDN(D, s, lmbda) assert b.cri.dimC == 1 assert b.cri.dimK == 1
def test_09(self): N = 16 Nd = 5 M = 4 D = cp.random.randn(Nd, Nd, M) s = cp.random.randn(N, N) try: b = cbpdn.ConvBPDN(D, s) b.solve() except Exception as e: print(e) assert 0
def test_32(self): N = 16 Nd = 5 M = 4 D = cp.random.randn(Nd, Nd, M) s = cp.random.randn(N, N) lmbda = 1e-1 opt = cbpdn.ConvBPDN.Options({'Verbose': False, 'MaxMainIter': 10}) b = cbpdn.ConvBPDN(D, s, lmbda, opt) bp = pickle.dumps(b) c = pickle.loads(bp) Xb = b.solve() Xc = c.solve() assert cp.linalg.norm(Xb - Xc) == 0.0
def test_13(self): N = 16 Nd = 5 Cd = 3 M = 4 D = cp.random.randn(Nd, Nd, Cd, M) s = cp.random.randn(N, N, Cd) lmbda = 1e-1 try: opt = cbpdn.ConvBPDN.Options({'LinSolveCheck': True}) b = cbpdn.ConvBPDN(D, s, lmbda, opt=opt, dimK=0) b.solve() except Exception as e: print(e) assert 0 assert list2array(b.getitstat().XSlvRelRes).max() < 1e-5
def test_08(self): Nr = 16 Nc = 17 Nd = 5 M = 4 D = cp.random.randn(Nd, Nd, M) s = cp.random.randn(Nr, Nc) lmbda = 1e-1 try: opt = cbpdn.ConvBPDN.Options({'LinSolveCheck': True}) b = cbpdn.ConvBPDN(D, s, lmbda, opt=opt) b.solve() except Exception as e: print(e) assert 0 assert list2array(b.getitstat().XSlvRelRes).max() < 1e-5
def test_06(self): N = 16 Nd = 5 K = 2 M = 4 D = cp.random.randn(Nd, Nd, M) s = cp.random.randn(N, N, K) dt = cp.float32 opt = cbpdn.ConvBPDN.Options({'Verbose': False, 'MaxMainIter': 20, 'AutoRho': {'Enabled': True}, 'DataType': dt}) lmbda = 1e-1 b = cbpdn.ConvBPDN(D, s, lmbda, opt=opt) b.solve() assert b.X.dtype == dt assert b.Y.dtype == dt assert b.U.dtype == dt