Пример #1
0
 def test_18(self):
     N = 64
     M = 2 * N
     L = 8
     cp.random.seed(12345)
     D = cp.random.randn(N, M)
     x0 = cp.zeros((M, 1))
     si = cp.random.permutation(M)
     x0[si[0:L]] = cp.random.randn(L, 1)
     s = D.dot(x0)
     lmbda = 5e-2
     opt = bpdn.BPDN.Options({
         'Verbose': False,
         'MaxMainIter': 300,
         'RelStopTol': 1e-5,
         'AutoRho': {
             'Enabled': False
         }
     })
     bp = bpdn.BPDN(D, s, lmbda=lmbda, opt=opt)
     Xp = bp.solve()
     epsilon = cp.linalg.norm(D.dot(Xp) - s)
     opt = bpdn.MinL1InL2Ball.Options({
         'Verbose': False,
         'MaxMainIter': 300,
         'RelStopTol': 1e-5,
         'rho': 2e1,
         'AutoRho': {
             'Enabled': False
         }
     })
     bc = bpdn.MinL1InL2Ball(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, 1) - cp.linalg.norm(Xc, 1)) < 1e-3
Пример #2
0
 def test_02(self):
     N = 8
     M = 16
     D = cp.random.randn(N, M)
     s = cp.random.randn(N, 1)
     try:
         b = bpdn.BPDN(D, s)
         b.solve()
     except Exception as e:
         print(e)
         assert 0
Пример #3
0
 def test_01(self):
     N = 8
     M = 16
     D = cp.random.randn(N, M)
     s = cp.random.randn(N, 1)
     lmbda = 1e-1
     try:
         b = bpdn.BPDN(D, s, lmbda)
         b.solve()
     except Exception as e:
         print(e)
         assert 0
Пример #4
0
 def test_19(self):
     N = 8
     M = 16
     D = cp.random.randn(N, M)
     s = cp.random.randn(N, 1)
     lmbda = 1e-1
     opt = bpdn.BPDN.Options({'Verbose': False, 'MaxMainIter': 10})
     b = bpdn.BPDN(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
Пример #5
0
 def test_05(self):
     N = 8
     M = 16
     D = cp.random.randn(N, M)
     s = cp.random.randn(N, 1)
     dt = cp.float16
     opt = bpdn.BPDN.Options({
         'Verbose': False,
         'MaxMainIter': 20,
         'AutoRho': {
             'Enabled': True
         },
         'DataType': dt
     })
     b = bpdn.BPDN(D, s, lmbda=1.0, opt=opt)
     b.solve()
     assert b.X.dtype == dt
     assert b.Y.dtype == dt
     assert b.U.dtype == dt
Пример #6
0
 def test_04(self):
     N = 8
     M = 8
     D = cp.random.randn(N, M)
     s = cp.random.randn(N, 1)
     try:
         opt = bpdn.BPDN.Options({
             'FastSolve': True,
             'Verbose': False,
             'MaxMainIter': 10,
             'AutoRho': {
                 'Enabled': False
             }
         })
         b = bpdn.BPDN(D, s, lmbda=1.0, opt=opt)
         b.solve()
     except Exception as e:
         print(e)
         assert 0
Пример #7
0
 def test_03(self):
     N = 8
     M = 16
     D = cp.random.randn(N, M)
     s = cp.random.randn(N, 1)
     try:
         opt = bpdn.BPDN.Options({
             'Verbose': False,
             'MaxMainIter': 20,
             'LinSolveCheck': True,
             'AutoRho': {
                 'StdResiduals': True
             }
         })
         b = bpdn.BPDN(D, s, lmbda=1.0, opt=opt)
         b.solve()
     except Exception as e:
         print(e)
         assert 0
     assert list2array(b.getitstat().XSlvRelRes).max() < 1e-5
Пример #8
0
 def test_22(self):
     N = 8
     M = 16
     D = cp.random.randn(N, M)
     s = cp.random.randn(N, 1)
     lmbda = 1e-1
     opt = bpdn.BPDN.Options({
         'Verbose': False,
         'MaxMainIter': 10,
         'Callback': CallbackTest,
         'RelaxParam': 1.0
     })
     b = bpdn.BPDN(D, s, lmbda, opt=opt)
     assert b.getitstat() is None
     b.solve()
     assert b.runtime > 0.0
     assert b.k == 7
     assert b.var_x() is not None
     assert b.var_y() is not None
     assert b.var_u() is not None
Пример #9
0
 def test_08(self):
     N = 64
     M = 2 * N
     L = 4
     np.random.seed(12345)
     D = cp.array(np.random.randn(N, M))
     x0 = cp.zeros((M, 1))
     si = cp.array(np.random.permutation(M))
     x0[si[0:L]] = cp.array(np.random.randn(L, 1))
     s0 = D.dot(x0)
     lmbda = 5e-3
     opt = bpdn.BPDN.Options({
         'Verbose': False,
         'MaxMainIter': 500,
         'RelStopTol': 5e-4
     })
     b = bpdn.BPDN(D, s0, lmbda, opt)
     b.solve()
     x1 = b.Y
     assert cp.abs(b.itstat[-1].ObjFun - 0.012009) < 1e-5
     assert cp.abs(b.itstat[-1].DFid - 1.9636082e-06) < 1e-5
     assert cp.abs(b.itstat[-1].RegL1 - 2.401446) < 1e-5
     assert cp.linalg.norm(x1 - x0) < 1e-3
Пример #10
0
import sporco.dictlearn.dictlearn as dictlearn
import sporco.cupy.admm.bpdn as bpdn
import sporco.admm.cmod as admm
import cupy as cp
import numpy as np

data_ra=np.load('Data_test/data_ra_test',allow_pickle=True)
v_ra=np.load('Data_81sets/v_ra',allow_pickle=True)

# REMEBER TO TRANSPOSE THE MATRICES IN THE FORMULATION
# v_ra.T @ u_ra.T = data_ra.T

x=bpdn.BPDN(np2cp(v_ra.T),np2cp(data_ra.T),0.4)
u_ra=x.
d=admm.CnstrMOD()