def debug_convsparsenet(lam_sparse=.1,N=16,perc_var=100.,stride=1,kshp=(7,7),batchsize=4,imsz=(64,64)): from hdl.learners import SGD whitenpatches = 100 if isinstance(kshp,int): kshp = (kshp,kshp) if isinstance(stride,int): stride = (stride,stride) imszr = imsz[0] imszc = imsz[1] #model = ConvWhitenInputModel(imshp=(10,1,32,32),convwhitenfiltershp=(7,7),perc_var=100.) model = ConvSparseSlowModel(imshp=(batchsize,1,imszr,imszc),convwhitenfiltershp=(7,7),N=N,kshp=kshp,stride=stride, perc_var=perc_var,lam_sparse=lam_sparse) l = SGD(model=model,datasource='vid075-chunks',display_every=50,save_every=10000,batchsize=model.imshp[0]) print 'whitenpatches', whitenpatches print 'model.imshp', model.imshp print 'model.convwhitenfiltershp', model.convwhitenfiltershp databatch = l.get_databatch(whitenpatches) l.model.learn_whitening(databatch) l.model.setup() l.learn(iterations=10) l.model.center_basis_functions = False l.learn(iterations=10)
def test_convsparsenet(lam_sparse=.1,N=16,perc_var=100.): from hdl.models import SparseSlowModel from hdl.learners import SGD whitenpatches = 1000 #model = ConvWhitenInputModel(imshp=(10,1,32,32),convwhitenfiltershp=(7,7),perc_var=100.) model = ConvSparseSlowModel(imshp=(10,1,28,28),convwhitenfiltershp=(7,7),N=N,kshp=(7,7),perc_var=perc_var,lam_sparse=lam_sparse) l = SGD(model=model,datasource='vid075-chunks',display_every=1000,save_every=10000,batchsize=model.imshp[0]) print 'whitenpatches', whitenpatches print 'model.imshp', model.imshp print 'model.convwhitenfiltershp', model.convwhitenfiltershp databatch = l.get_databatch(whitenpatches) l.model.learn_whitening(databatch) l.model.setup() l.learn(iterations=20000) l.change_target(.5) l.learn(iterations=5000) l.change_target(.5) l.learn(iterations=5000) #l.learn(iterations=160000) #l.change_target(.5) #l.learn(iterations=20000) #l.change_target(.5) #l.learn(iterations=20000) from hdl.display import display_final display_final(l.model)
def test_convsparsenet_subspace(lam_sparse=1.,lam_slow=1.,N=8,perc_var=100.,stride=(1,1)): from hdl.models import ConvSparseSlowModel from hdl.learners import SGD whitenpatches = 1000 psz = 48 ksz = 16 convwhitenfiltershp=(15,15) #model = ConvWhitenInputModel(imshp=(10,1,32,32),convwhitenfiltershp=(7,7),perc_var=100.) model = ConvSparseSlowModel(imshp=(4,1,psz,psz),convwhitenfiltershp=convwhitenfiltershp,N=N,kshp=(ksz,ksz),stride=stride, sparse_cost='subspacel1', perc_var=perc_var, lam_sparse=lam_sparse, lam_slow=lam_slow, mask=True, force_subspace_orthogonal=True) l = SGD(model=model,datasource='vid075-chunks',display_every=50,save_every=10000, eta_target_maxupdate=0.5, batchsize=model.imshp[0]) print 'whitenpatches', whitenpatches print 'model.imshp', model.imshp print 'model.convwhitenfiltershp', model.convwhitenfiltershp databatch = l.get_databatch(whitenpatches) l.model.learn_whitening(databatch) l.model.setup() l.learn(iterations=1000) l.model.center_basis_functions=False l.learn(iterations=9000) l.change_target(.5) l.learn(iterations=5000) l.change_target(.5) l.learn(iterations=5000) #l.learn(iterations=160000) #l.change_target(.5) #l.learn(iterations=20000) #l.change_target(.5) #l.learn(iterations=20000) from hdl.display import display_final display_final(l.model)
def test_convsparsenet(lam_sparse=.1,N=16,perc_var=100.,stride=1,kshp=(7,7),batchsize=4): from hdl.learners import SGD whitenpatches = 1000 if isinstance(kshp,int): kshp = (kshp,kshp) if isinstance(stride,int): stride = (stride,stride) imszr = 5*stride[0] + kshp[0] - 1 imszc = 5*stride[1] + kshp[1] - 1 #model = ConvWhitenInputModel(imshp=(10,1,32,32),convwhitenfiltershp=(7,7),perc_var=100.) model = ConvSparseSlowModel(imshp=(batchsize,1,imszr,imszc),convwhitenfiltershp=(7,7),N=N,kshp=kshp,stride=stride, perc_var=perc_var,lam_sparse=lam_sparse) l = SGD(model=model,datasource='vid075-chunks',display_every=50,save_every=10000,batchsize=model.imshp[0]) print 'whitenpatches', whitenpatches print 'model.imshp', model.imshp print 'model.convwhitenfiltershp', model.convwhitenfiltershp databatch = l.get_databatch(whitenpatches) l.model.learn_whitening(databatch) l.model.setup() l.learn(iterations=5000) l.model.center_basis_functions = False l.learn(iterations=15000) l.change_target(.5) l.learn(iterations=5000) l.change_target(.5) l.learn(iterations=5000) #l.learn(iterations=160000) #l.change_target(.5) #l.learn(iterations=20000) #l.change_target(.5) #l.learn(iterations=20000) from hdl.display import display_final display_final(l.model)
def test_sparsenet_subspace(lam_sparse=1.,lam_slow=1.,N=8,perc_var=100.): from hdl.models import SparseSlowModel from hdl.learners import SGD whitenpatches = 10000 psz = 16 #model = ConvWhitenInputModel(imshp=(10,1,32,32),convwhitenfiltershp=(7,7),perc_var=100.) model = SparseSlowModel(patch_sz=psz,N=N, sparse_cost='subspacel1', perc_var=perc_var, lam_sparse=lam_sparse, lam_slow=lam_slow,T=48) l = SGD(model=model,datasource='vid075-chunks',display_every=100,save_every=10000,batchsize=model.T) print 'whitenpatches', whitenpatches databatch = l.get_databatch(whitenpatches) l.model.learn_whitening(databatch) l.model.setup() l.learn(iterations=5000) l.change_target(.5) l.learn(iterations=5000) l.change_target(.5) l.learn(iterations=5000) #l.learn(iterations=160000) #l.change_target(.5) #l.learn(iterations=20000) #l.change_target(.5) #l.learn(iterations=20000) from hdl.display import display_final display_final(l.model)
whitenpatches = 200 patch_sz = 48 kshp = (16,16) N = 256 model = ConvSparseSlowModel(imshp=(2,1,patch_sz,patch_sz),convwhitenfiltershp=(7,7),N=N,kshp=kshp, perc_var=99.5,lam_sparse=1.0) l = SGD(model=model,datasource='YouTubeFaces_aligned',display_every=1000,batchsize=model.imshp[0]) databatch = l.get_databatch(whitenpatches) l.model.learn_whitening(databatch) l.model.setup() l.learn(iterations=100000) #l.batchsize *= 2 #l.learn(iterations=100000) l.change_target(.5) #l.batchsize *= 2 l.learn(iterations=100000) l.change_target(.5) #l.batchsize *= 2 l.learn(iterations=100000) l.change_target(.5) #l.batchsize *= 2 l.learn(iterations=100000) from hdl.display import display_final display_final(l.model)
#self.get_databatch() time 0.000623 #self.model.gradient time 0.119030 #self.model.update_model time 0.010784 #self.get_databatch() time 0.000476 #self.model.gradient time 0.118870 #self.model.update_model time 0.009735 #self.get_databatch() time 0.000473 #self.model.gradient time 0.118527 #self.model.update_model time 0.011175 # Experiment with projection and maxiter=1 #l = SGD(model=SparseSlowModel(patch_sz=32,N=1024,T=64,sparse_cost='l1',slow_cost=None,fista_maxiter=1,u_init_method='proj'),datasource='vid075-chunks') #Default #l = SGD(model=SparseSlowModel(patch_sz=16,N=256,T=64,sparse_cost='subspacel1',slow_cost='dist'),datasource='vid075-chunks') l = SGD(model=SparseSlowModel(patch_sz=16,N=256,T=48,sparse_cost='elastic',lam_l2=1.0,slow_cost=None),datasource='vid075-chunks',display_every=10000,save_every=10000) databatch = l.get_databatch(whitenpatches) l.model.learn_whitening(databatch) l.model.setup() l.learn(iterations=160000) l.change_target(.5) l.learn(iterations=20000) l.change_target(.5) l.learn(iterations=20000) from hdl.display import display_final display_final(l.model)
Xhat = np.dot(A,m.inferlatent(X)) return .5*np.sum((X - Xhat)**2) + np.sum(np.abs(u))*m.lam_sparse.get_value() iterations = 100 epochs = 100 t0 = now() lossdefault = defaultdict(list) loss = compute_loss(ldefault.model,preXdefault) print ldefault.iter, 'Default method loss:', loss tic = now() - t0 lossdefault['loss'].append(loss) lossdefault['time'].append(tic) lossdefault['iter'].append(ldefault.iter) for epoch in range(int(.8*epochs)): ldefault.learn(iterations=iterations) loss = compute_loss(ldefault.model,preXdefault) print ldefault.iter, 'Default method loss:', loss, 'learner.eta', ldefault.eta tic = now() - t0 lossdefault['loss'].append(loss) lossdefault['time'].append(tic) lossdefault['iter'].append(ldefault.iter) ldefault.change_target(.5) for epoch in range(int(.1*epochs)): ldefault.learn(iterations=iterations) loss = compute_loss(ldefault.model,preXdefault) print ldefault.iter, 'Default method loss:', loss, 'learner.eta', ldefault.eta tic = now() - t0 lossdefault['loss'].append(loss) lossdefault['time'].append(tic)
import hdl reload(hdl) from hdl.models import SparseSlowModel from hdl.learners import SGD whitenpatches = 10000 l = SGD(model=SparseSlowModel(patch_sz=8,N=64,T=64,sparse_cost='l1',slow_cost=None),datasource='vid075-chunks',display_every=500,save_every=500) databatch = l.get_databatch(whitenpatches) l.model.learn_whitening(databatch) l.model.setup() l.learn()