Exemple #1
0
 def valid(self,):
     print 'Performing validation.'
     model = RNN_RNADE(self.state['n_visible'],self.state['n_hidden'],self.state['n_recurrent'],self.state['n_components'],hidden_act=self.state['hidden_act'],
             l2=self.state['l2'],rec_mu=self.state['rec_mu'],rec_mix=self.state['rec_mix'],rec_sigma=self.state['rec_sigma'],load=False,load_dir=self.output_folder)
     #model.params = self.params
     model.load_model(self.output_folder,'best_params_train.pickle')
     num_test_sequences = 1
     batch_size = 100
     num_samples = 1
     error = []
     for i in xrange(num_test_sequences):
         seq = mocap_data.sample_test_seq(batch_size) 
         samples = model.sample_given_sequence(seq,num_samples)
         sq_diff = (samples - seq)**2
         sq_diff = sq_diff.mean(axis=0)
         sq_diff = sq_diff.sum(axis=1)
         seq_error = sq_diff.mean(axis=0)
         error.append(seq_error)
     total_error = numpy.mean(error)
     print 'Validation error: ',total_error
     self.valid_costs.append(total_error)
     if total_error < self.best_valid_cost:
         print 'Best validation params!'
         self.best_valid_cost = total_error
         self.save_model('best_params_valid.pickle')
Exemple #2
0
def test(filenames):
    new_results = {}
    for filename in filenames:
        print 'Testing parameters: ',filename
        load_dir = base_dir + filename
        split_filename = filename.split('_')
        n_hidden = int(split_filename[0].split('-')[-1])
        n_recurrent = int(split_filename[1].split('-')[-1])
        n_visible = 49
        n_components = int(split_filename[2].split('-')[-1])
        hidden_act = 'sigmoid'

        model = RNN_RNADE(n_visible,n_hidden,n_recurrent,n_components,hidden_act='sigmoid',
                          load=True,load_dir=load_dir)
        error = []
        for i in xrange(num_test_sequences):
            seq = mocap_data.sample_test_seq(batch_size) 
            samples = model.sample_given_sequence(seq,num_samples)
            sq_diff = (samples - seq)**2
            sq_diff = sq_diff.mean(axis=0)
            sq_diff = sq_diff.sum(axis=1)
            seq_error = sq_diff.mean(axis=0)
            error.append(seq_error)
            print 'Seq %d error: '%(i+1),seq_error    
        print 'Mean error: ',numpy.mean(error)
        new_results[filename] = numpy.mean(error)    
    cPickle.dump(new_results,open('test_results.pickle','w'))
Exemple #3
0
def test(filenames):
    new_results = {}
    for filename in filenames:
        print 'Testing parameters: ', filename
        load_dir = base_dir + filename
        split_filename = filename.split('_')
        n_hidden = int(split_filename[0].split('-')[-1])
        n_recurrent = int(split_filename[1].split('-')[-1])
        n_visible = 49
        n_components = int(split_filename[2].split('-')[-1])
        hidden_act = 'sigmoid'

        model = RNN_RNADE(n_visible,
                          n_hidden,
                          n_recurrent,
                          n_components,
                          hidden_act='sigmoid',
                          load=True,
                          load_dir=load_dir)
        error = []
        for i in xrange(num_test_sequences):
            seq = mocap_data.sample_test_seq(batch_size)
            samples = model.sample_given_sequence(seq, num_samples)
            sq_diff = (samples - seq)**2
            sq_diff = sq_diff.mean(axis=0)
            sq_diff = sq_diff.sum(axis=1)
            seq_error = sq_diff.mean(axis=0)
            error.append(seq_error)
            print 'Seq %d error: ' % (i + 1), seq_error
        print 'Mean error: ', numpy.mean(error)
        new_results[filename] = numpy.mean(error)
    cPickle.dump(new_results, open('test_results.pickle', 'w'))
Exemple #4
0
 def valid(self, ):
     print 'Performing validation.'
     model = RNN_RNADE(self.state['n_visible'],
                       self.state['n_hidden'],
                       self.state['n_recurrent'],
                       self.state['n_components'],
                       hidden_act=self.state['hidden_act'],
                       l2=self.state['l2'],
                       rec_mu=self.state['rec_mu'],
                       rec_mix=self.state['rec_mix'],
                       rec_sigma=self.state['rec_sigma'],
                       load=False,
                       load_dir=self.output_folder)
     #model.params = self.params
     model.load_model(self.output_folder, 'best_params_train.pickle')
     num_test_sequences = 1
     batch_size = 100
     num_samples = 1
     error = []
     for i in xrange(num_test_sequences):
         seq = mocap_data.sample_test_seq(batch_size)
         samples = model.sample_given_sequence(seq, num_samples)
         sq_diff = (samples - seq)**2
         sq_diff = sq_diff.mean(axis=0)
         sq_diff = sq_diff.sum(axis=1)
         seq_error = sq_diff.mean(axis=0)
         error.append(seq_error)
     total_error = numpy.mean(error)
     print 'Validation error: ', total_error
     self.valid_costs.append(total_error)
     if total_error < self.best_valid_cost:
         print 'Best validation params!'
         self.best_valid_cost = total_error
         self.save_model('best_params_valid.pickle')
Exemple #5
0
def control_exp():
    n_hidden = 50
    n_recurrent = 25
    n_components = 5
    n_visible = 49
    hidden_act = 'sigmoid'
    model = RNN_RNADE(
        n_visible,
        n_hidden,
        n_recurrent,
        n_components,
        hidden_act='sigmoid',
        load=False,
    )
    error = []
    for i in xrange(num_test_sequences):
        seq = mocap_data.sample_test_seq(batch_size)
        samples = model.sample_given_sequence(seq, num_samples)
        sq_diff = (samples - seq)**2
        sq_diff = sq_diff.mean(axis=0)
        sq_diff = sq_diff.sum(axis=1)
        seq_error = sq_diff.mean(axis=0)
        error.append(seq_error)
        print 'Seq %d error: ' % (i + 1), seq_error
    print 'Mean error: ', numpy.mean(error)
    new_results[filename] = numpy.mean(error)
Exemple #6
0
 def test(self, ):
     self.model = RNN_RNADE(self.n_visible,
                            self.n_hidden,
                            self.n_recurrent,
                            self.n_components,
                            hidden_act=self.hidden_act,
                            l2=self.l2,
                            rec_mu=self.rec_mu,
                            rec_mix=self.rec_mix,
                            rec_sigma=self.rec_sigma,
                            load=True,
                            load_dir=self.load_dir)
     num_test_sequences = 100
     batch_size = 100
     num_samples = 1
     error = []
     for i in xrange(num_test_sequences):
         seq = mocap_data.sample_test_seq(batch_size)
         samples = self.model.sample_given_sequence(seq, num_samples)
         sq_diff = (samples - seq)**2
         sq_diff = sq_diff.mean(axis=0)
         sq_diff = sq_diff.sum(axis=1)
         seq_error = sq_diff.mean(axis=0)
         error.append(seq_error)
     total_error = numpy.mean(error)
     self.results['error_list'] = error
     self.results['mean_error'] = total_error
     cPickle.dump(
         self.results,
         open(os.path.join(self.output_folder, 'results.pickle'), 'w'))
     print 'The squared prediction error per frame per sequence is: %f' % (
         total_error)
Exemple #7
0
 def __init__(self,state):
     self.state = state
     for key,val in self.state.iteritems():
         setattr(self,key,val)
     print '*******PARAMS*******'
     for param,value in self.state.iteritems():
         print '%s: %s'%(param,value)
     print '********************'
     self.model = RNN_RNADE(self.n_visible,self.n_hidden,self.n_recurrent,self.n_components,hidden_act=self.hidden_act,l2=self.l2,rec_mu=self.rec_mu,
                            rec_mix=self.rec_mix,rec_sigma=self.rec_sigma,load=self.load,load_dir=self.load_dir)
     if self.load_pretrain:
         self.load_pretrain_RNADE()
     self.results = {}
     self.model.build_RNN_RNADE()
Exemple #8
0
def control_exp():
    n_hidden = 50
    n_recurrent = 25
    n_components = 5
    n_visible = 49
    hidden_act = 'sigmoid'
    model = RNN_RNADE(n_visible,n_hidden,n_recurrent,n_components,hidden_act='sigmoid',
                          load=False,)
    error = []
    for i in xrange(num_test_sequences):
        seq = mocap_data.sample_test_seq(batch_size) 
        samples = model.sample_given_sequence(seq,num_samples)
        sq_diff = (samples - seq)**2
        sq_diff = sq_diff.mean(axis=0)
        sq_diff = sq_diff.sum(axis=1)
        seq_error = sq_diff.mean(axis=0)
        error.append(seq_error)
        print 'Seq %d error: '%(i+1),seq_error    
    print 'Mean error: ',numpy.mean(error)
    new_results[filename] = numpy.mean(error)    
Exemple #9
0
 def test(self,):
     self.model = RNN_RNADE(self.n_visible,self.n_hidden,self.n_recurrent,self.n_components,hidden_act=self.hidden_act,l2=self.l2,rec_mu=self.rec_mu,
                            rec_mix=self.rec_mix,rec_sigma=self.rec_sigma,load=True,load_dir=self.load_dir)
     num_test_sequences = 100
     batch_size = 100
     num_samples = 1
     error = []
     for i in xrange(num_test_sequences):
         seq = mocap_data.sample_test_seq(batch_size) 
         samples = self.model.sample_given_sequence(seq,num_samples)
         sq_diff = (samples - seq)**2
         sq_diff = sq_diff.mean(axis=0)
         sq_diff = sq_diff.sum(axis=1)
         seq_error = sq_diff.mean(axis=0)   
         error.append(seq_error)
     total_error = numpy.mean(error)
     self.results['error_list'] = error
     self.results['mean_error'] = total_error
     cPickle.dump(self.results,open(os.path.join(self.output_folder,'results.pickle'),'w'))
     print 'The squared prediction error per frame per sequence is: %f'%(total_error)
Exemple #10
0
class trainer:
    def __init__(self,state):
        self.state = state
        for key,val in self.state.iteritems():
            setattr(self,key,val)
        print '*******PARAMS*******'
        for param,value in self.state.iteritems():
            print '%s: %s'%(param,value)
        print '********************'
        self.model = RNN_RNADE(self.n_visible,self.n_hidden,self.n_recurrent,self.n_components,hidden_act=self.hidden_act,l2=self.l2,rec_mu=self.rec_mu,
                               rec_mix=self.rec_mix,rec_sigma=self.rec_sigma,load=self.load,load_dir=self.load_dir)
        if self.load_pretrain:
            self.load_pretrain_RNADE()
        self.results = {}
        self.model.build_RNN_RNADE()

    def load_pretrain_RNADE(self,):
        rnade = RNADE(self.n_visible,self.n_hidden,self.n_components,hidden_act=self.hidden_act,l2=self.l2)
        rnade.load_model(self.pretrain_folder,'pre_train_params.pickle')
        for param in rnade.params:
            value = param.get_value()
            self.model.params_dict[param.name].set_value(value)

    def train(self,):
        if self.pre_train:
            self.pretrain_RNADE()
        print 'Training RNN-RNADE'
        self.optimiser = SGD_mocap(self.model.params,[self.model.v],[self.model.cost,self.model.neg_ll_cost,self.model.l2_cost],
                                   momentum=self.momentum,patience=self.patience,state=self.state,clip_gradients=self.clip_gradients,
                                   grad_threshold=self.grad_threshold)
        self.optimiser.train(learning_rate=self.learning_rate,num_updates=self.num_updates,save=self.save,output_folder=self.output_folder,
                            lr_update=self.lr_update,update_type=self.update_type,mom_rate=self.mom_rate,start=self.start,batch_size=self.batch_size)
        optimiser = self.optimiser
        self.plot_costs(optimiser,fig_title='RNN-RNADE Training Cost',filename='training_cost.png')
        self.results['train_costs'] = self.optimiser.train_costs
        cPickle.dump(self.results,open(os.path.join(self.output_folder,'results.pickle'),'w'))
        #self.results['valid_costs'] = self.optimiser.valid_costs

    # def test(self,):
    #     self.model = RNN_RNADE(self.n_visible,self.n_hidden,self.n_recurrent,self.n_components,hidden_act=self.hidden_act,l2=self.l2,rec_mu=self.rec_mu,
    #                            rec_mix=self.rec_mix,rec_sigma=self.rec_sigma,load=self.load,load_dir=self.load_dir)
    #     self.test_func = theano.function([self.model.v],self.model.log_probs)

    def pretrain_RNADE(self,):
        print 'Pre-training the RNADE'
        l2 = 2.
        rnade = RNADE(self.n_visible,self.n_hidden,self.n_components,hidden_act=self.hidden_act,l2=l2)
        batch_size = 100
        num_examples = 100
        filename = 'pre_train_params.pickle'
        learning_rate = self.learning_rate_pretrain
        train_data = mocap_data.sample_train_seq(batch_size)
        for i in xrange(1,num_examples):
            train_data = numpy.vstack((train_data,mocap_data.sample_train_seq(batch_size)))
        numpy.random.shuffle(train_data)
        total_num = train_data.shape[0]
        train_frac = 0.8
        train_dataset = Dataset([train_data[0:int(train_frac*total_num)]],100)
        valid_dataset = Dataset([train_data[int(train_frac*total_num):]],100)
        optimiser = SGD_Optimiser(rnade.params,[rnade.v],[rnade.cost,rnade.ll_cost,rnade.l2_cost],momentum=True,patience=20,clip_gradients=self.clip_gradients)
        optimiser.train(train_dataset,valid_set=valid_dataset,learning_rate=learning_rate,num_epochs=5,save=True,
                    lr_update=True,update_type='linear',start=2,output_folder=self.output_folder,filename=filename)
        self.plot_costs(optimiser,fig_title='Pretraining cost',filename='pretraining.png')
        print 'Done pre-training.'
        ####load best params from pre-training###
        print 'Loading best RNADE parameters'
        rnade = RNADE(self.n_visible,self.n_hidden,self.n_components,hidden_act=self.hidden_act,l2=l2)
        rnade.load_model(self.output_folder,filename=filename)
        ###########
        for param in rnade.params:
            value = param.get_value()
            self.model.params_dict[param.name].set_value(value)
        print 'Done pre-training.'
        #Saving results to dict
        self.results['pretraining_train_costs'] = optimiser.train_costs
        self.results['pretraining_valid_costs'] = optimiser.valid_costs

    def test(self,):
        self.model = RNN_RNADE(self.n_visible,self.n_hidden,self.n_recurrent,self.n_components,hidden_act=self.hidden_act,l2=self.l2,rec_mu=self.rec_mu,
                               rec_mix=self.rec_mix,rec_sigma=self.rec_sigma,load=True,load_dir=self.load_dir)
        num_test_sequences = 100
        batch_size = 100
        num_samples = 1
        error = []
        for i in xrange(num_test_sequences):
            seq = mocap_data.sample_test_seq(batch_size) 
            samples = self.model.sample_given_sequence(seq,num_samples)
            sq_diff = (samples - seq)**2
            sq_diff = sq_diff.mean(axis=0)
            sq_diff = sq_diff.sum(axis=1)
            seq_error = sq_diff.mean(axis=0)   
            error.append(seq_error)
        total_error = numpy.mean(error)
        self.results['error_list'] = error
        self.results['mean_error'] = total_error
        cPickle.dump(self.results,open(os.path.join(self.output_folder,'results.pickle'),'w'))
        print 'The squared prediction error per frame per sequence is: %f'%(total_error)

    def plot_costs(self,optimiser,fig_title='Default cost',filename='cost.png'):
        epochs = [i for i in xrange(len(optimiser.train_costs))]
        train_costs = numpy.array(optimiser.train_costs)
        if train_costs.ndim == 1:
            train_costs = numpy.array(optimiser.train_costs).reshape(-1)
        else:
            train_costs = numpy.array(optimiser.train_costs)[:,0]  #0'th cost must be the objective 

        pylab.figure()
        pylab.plot(epochs,train_costs,'b',label='training loglik')
        pylab.xlabel('epoch')
        pylab.ylabel('negative log-likelihood')
        filename = os.path.join(self.output_folder,filename)
        pylab.legend()
        pylab.title(fig_title)
        pylab.savefig(filename)
        if optimiser.valid_costs:
            valid_costs = numpy.array(optimiser.valid_costs)
            if valid_costs.ndim == 1:
                valid_costs = numpy.array(optimiser.valid_costs).reshape(-1)
            else:
                valid_costs = numpy.array(optimiser.valid_costs)[:,0]  #0'th cost must be the objective 
            epochs = [i for i in xrange(len(optimiser.valid_costs))]
            pylab.figure()
            pylab.plot(epochs,valid_costs,'b',label='sq pred. error')
            pylab.xlabel('epoch')
            pylab.ylabel('squared_prediction error')
            pylab.legend()
            filename = os.path.join(self.output_folder,'valid_costs_full.png')
            pylab.title(fig_title)
            pylab.savefig(filename)        
Exemple #11
0
from RNADE import *
from RNN_RNADE import RNN_RNADE
import mocap_data
import pdb
from numpy_implementations import *
import pickle

#model params
n_hidden = 50
n_recurrent = 100
n_visible = 49
n_components = 10
hidden_act = 'sigmoid'

#initialize model
model = RNN_RNADE(n_visible,n_hidden,n_recurrent,n_components,hidden_act='sigmoid',
                  load=False,rec_mu=True,rec_mix=False,rec_sigma=False)

load_dir = '/scratch/Sid/RNN_RNADE_2/100-300-10-0.1-0.001/mu'
model.load_model(None,filename='best_params_train.pickle')
model.build_RNN_RNADE()


#make functions for theano RNN-RNADE
theano_outputs = theano.function([model.v],[model.log_probs,model.u_t,model.b_alpha_t,model.b_mu_t,model.b_sigma_t])
new_seq = pickle.load(open('seq.pkl','r'))

#get sequence 

#fprop through numpy RNN-RNADE
np_ll,np_u_t,np_b_alpha_t,np_b_mu_t,np_b_sigma_t = RNN_RNADE_fprop(new_seq,model)
print np_ll
Exemple #12
0
from numpy_implementations import *
import pickle

#model params
n_hidden = 50
n_recurrent = 100
n_visible = 49
n_components = 10
hidden_act = 'sigmoid'

#initialize model
model = RNN_RNADE(n_visible,
                  n_hidden,
                  n_recurrent,
                  n_components,
                  hidden_act='sigmoid',
                  load=False,
                  rec_mu=True,
                  rec_mix=False,
                  rec_sigma=False)

load_dir = '/scratch/Sid/RNN_RNADE_2/100-300-10-0.1-0.001/mu'
model.load_model(None, filename='best_params_train.pickle')
model.build_RNN_RNADE()

#make functions for theano RNN-RNADE
theano_outputs = theano.function([model.v], [
    model.log_probs, model.u_t, model.b_alpha_t, model.b_mu_t, model.b_sigma_t
])
new_seq = pickle.load(open('seq.pkl', 'r'))
Exemple #13
0
import theano
from RNADE import *
from RNN_RNADE import RNN_RNADE
import mocap_data
import pdb
from numpy_implementations import *
import pickle

#model params
n_hidden = 50
n_recurrent = 100
n_visible = 49
n_components = 10
hidden_act = 'sigmoid'

model = RNN_RNADE(n_visible,n_hidden,n_recurrent,n_components,hidden_act='sigmoid',
                  load=False,rec_mu=True,rec_mix=False,rec_sigma=False)

load_dir = '/scratch/Sid/RNN_RNADE_fast_reg/100-300-1-0.001-0.1/mu-sigma'
model.load_model(load_dir,'params_NaN.pickle')
model.build_RNN_RNADE()

# batch_size = 100
# num_samples = 1
# seq = mocap_data.sample_train_seq(batch_size)
# new_seq = numpy.zeros(seq.shape)
# new_seq[:] = seq
path = os.path.join(load_dir,'nan_seq.pkl')
new_seq = pickle.load(open(path,'r'))

ll = RNN_RNADE_fprop(new_seq,model)
pdb.set_trace()
Exemple #14
0
from RNADE import *
from RNN_RNADE import RNN_RNADE
import mocap_data
import pdb
from numpy_implementations import *
import pickle

#model params
n_hidden = 50
n_recurrent = 100
n_visible = 49
n_components = 10
hidden_act = 'sigmoid'

#initialize model
model = RNN_RNADE(n_visible,n_hidden,n_recurrent,n_components,hidden_act='sigmoid',
                  load=False,rec_mu=True,rec_mix=False,rec_sigma=False)

load_dir = '/scratch/Sid/RNN_RNADE_2/100-300-10-0.1-0.001/mu'
model.load_model(load_dir,'best_params_train.pickle')
model.build_RNN_RNADE()


#make functions for theano RNN-RNADE
theano_outputs = theano.function([model.v],[model.log_probs,model.u_t,model.b_alpha_t,model.b_mu_t,model.b_sigma_t])


#get sequence from dataset
new_seq = pickle.load(open('seq.pkl','r'))

#fprop through theano RNN-RNADE
th_ll,th_u_t,th_b_alpha_t,th_b_mu_t,th_b_sigma_t= theano_outputs(new_seq)
Exemple #15
0
import pdb
from numpy_implementations import *
import pickle

#model params
n_hidden = 50
n_recurrent = 100
n_visible = 49
n_components = 10
hidden_act = 'sigmoid'

model = RNN_RNADE(n_visible,
                  n_hidden,
                  n_recurrent,
                  n_components,
                  hidden_act='sigmoid',
                  load=False,
                  rec_mu=True,
                  rec_mix=False,
                  rec_sigma=False)

load_dir = '/scratch/Sid/RNN_RNADE_fast_reg/100-300-1-0.001-0.1/mu-sigma'
model.load_model(load_dir, 'params_NaN.pickle')
model.build_RNN_RNADE()

# batch_size = 100
# num_samples = 1
# seq = mocap_data.sample_train_seq(batch_size)
# new_seq = numpy.zeros(seq.shape)
# new_seq[:] = seq
path = os.path.join(load_dir, 'nan_seq.pkl')