def Save_Simulation_As(self, event=None): self.canvas.Show(False) dlg = FileDialog(self, "Save Simulation As...", default_dir=os.getcwd() + "/sims/", wildcard='DAT Files|*.dat|All Files|*.*', save=1) result = dlg.ShowModal() if result == 'ok': filename = dlg.GetPaths()[0] else: filename = None dlg.Destroy() if filename: d = zpickle.load(self.tmpfile) self.params['save_sim_file'] = filename d['params'] = self.params zpickle.save(d, filename) self.modified = False self.ResetTitle() self.canvas.Show(True) return filename
def __load_sim__(self, lfname): sim = zpickle.load(lfname) params = sim['params'] params['save_sim_file'] = self.params['save_sim_file'] params['load_sim_file'] = '' params['continue'] = False try: params['initial_weights'] = sim['weights'] params['initial_moments'] = sim['moments'] except KeyError: self.params = params return 1 params['load_sim_file'] = self.tmpfile params['continue'] = True sim['params'] = params self.params = params zpickle.save(sim, self.tmpfile) return 0
def run_sim_client(params=None, url='http://localhost:4242'): from xmlrpclib import ServerProxy import pickle server = ServerProxy('http://localhost:4242') if not params: params = default_params() params_bytes = pickle.dumps(params, 0) if params['load_sim_file']: fid = open(params['load_sim_file'], 'rb') bytes = fid.read() fid.close() lf_bytes = pickle.dumps(bytes, 0) else: lf_bytes = '' sim_bytes = server.run_sim_server(params_bytes, lf_bytes) sim = pickle.loads(sim_bytes) print 'Save: %s' % params['save_sim_file'] zpickle.save(sim, params['save_sim_file']) return sim
def Save_Simulation_As(self,event=None): self.canvas.Show(False) dlg = FileDialog(self, "Save Simulation As...",default_dir=os.getcwd()+"/sims/", wildcard='DAT Files|*.dat|All Files|*.*',save=1) result = dlg.ShowModal() if result == 'ok': filename = dlg.GetPaths()[0] else: filename=None dlg.Destroy() if filename: d=zpickle.load(self.tmpfile) self.params['save_sim_file']=filename d['params']=self.params zpickle.save(d,filename) self.modified=False self.ResetTitle() self.canvas.Show(True) return filename
def __load_sim__(self,lfname): sim=zpickle.load(lfname) params=sim['params'] params['save_sim_file']=self.params['save_sim_file'] params['load_sim_file']='' params['continue']=False try: params['initial_weights']=sim['weights'] params['initial_moments']=sim['moments'] except KeyError: self.params=params return 1 params['load_sim_file']=self.tmpfile params['continue']=True sim['params']=params self.params=params zpickle.save(sim,self.tmpfile) return 0
def save_sim(sim_params, N, C): sim_params = deepcopy(sim_params) sim_params['display'] = None d = {'sim_params': sim_params, 'N': N, 'C': C} zpickle.save(d, sim_params['save_sim_file'])
def Save_Simulation(self, event=None): if not self.modified: return sfname = self.params['save_sim_file'] def_sfname = default_params()['save_sim_file'] if sfname == def_sfname: filename = self.Save_Simulation_As() else: filename = sfname d = zpickle.load(self.tmpfile) d['params'] = self.params zpickle.save(d, sfname) self.modified = False self.ResetTitle() return filename
def Save_Simulation(self,event=None): if not self.modified: return sfname=self.params['save_sim_file'] def_sfname=default_params()['save_sim_file'] if sfname==def_sfname: filename=self.Save_Simulation_As() else: filename=sfname d=zpickle.load(self.tmpfile) d['params']=self.params zpickle.save(d,sfname) self.modified=False self.ResetTitle() return filename
def run_sim(params=None,parent=None): if not params: params=default_params() elif isinstance(params,basestring): fname=params d=zpickle.load(fname) params=d['params'] if parent: save_sim_file=params['tmpfile'] params['display']=1 else: save_sim_file=params['save_sim_file'] if params['load_sim_file']==params['tmpfile']: params['load_sim_file']='' if not save_sim_file: save_sim_file='sims/untitled.dat' # Deal the random number seed here if params['random_seed']=='clock': numpy.random.seed(None) else: numpy.random.seed(params['random_seed']) params['actual_random_seed']=numpy.random.get_state() params['random_seed2']=int(round(numpy.random.rand()*1e6)) start_time=time.time() end_time=None sim_time=None num_channels=len(params['pattern_input']) num_moments=get_num_moments(params) layer=0 test_stimulus=params['test_stimulus'][layer]['type'] total_num_inputs=0 for p in params['pattern_input']: total_num_inputs=total_num_inputs+p['num_inputs'] num_neurons=prod(params['num_neurons']) if params['load_sim_file']: d=zpickle.load(params['load_sim_file']) load_sim_params=d['params'] weights=d['weights'] moments=d['moments'] initial_weights=d['weights'] initial_moments=d['moments'] t_mat=None if params['continue']: t_mat=d['t_mat'] moments_mat=d['moments_mat'] response_mat=d['response_mat'] weights_mat=d['weights_mat'] if not t_mat: moments_mat=None response_mat=None else: params['initial_weights']=weights params['initial_moments']=moments else: params['continue']=0 full_mask=[] for p in params['pattern_input']: full_mask.append(get_circle_mask(p['num_inputs'])) full_mask=numpy.array(full_mask).ravel() if not params['initial_weights']: params['initial_weights']=[numpy.asarray(numpy.random.rand(num_neurons,total_num_inputs)*(params['initial_weight_range'][1]-params['initial_weight_range'][0])+params['initial_weight_range'][0],numpy.float64)] params['initial_weights'][layer]=params['initial_weights'][layer]*(full_mask.repeat(num_neurons)) initial_weights=params['initial_weights'] if not params['initial_moments']: params['initial_moments']=[numpy.asarray(numpy.random.rand(num_moments,num_neurons)*(params['initial_moment_range'][1]-params['initial_moment_range'][0])+params['initial_moment_range'][0],numpy.float64)] initial_moments=params['initial_moments'] moments_mat=numpy.dstack( (initial_moments[0],) ) t_mat=None if not t_mat: # not loaded from file t_mat=[0] start_epoch=1 moments_mat=numpy.dstack( (initial_moments[0],) ) if params['keep_every_epoch']: weights_mat=[initial_weights] else: weights_mat=[] response_mat=[] response_var=[] test_stimulus_type=params['test_stimulus'][layer]['type'] if test_stimulus_type==1: # test OR single response_var=test_OR_single(params,initial_weights) if not response_var: params['test_stimulus'][layer]['type']=0 else: for r in response_var: response_mat.append([r[0]]) else: start_epoch=len(t_mat) test_stimulus_type=params['test_stimulus'][layer]['type'] response_var=[] if test_stimulus_type==1: # test OR single response_var=test_OR_single(params,initial_weights) if not response_var: params['test_stimulus'][layer]['type']=0 else: for r,m in zip(response_var,response_mat): m.append(r[0]) weights=deepcopy(initial_weights) moments=deepcopy(initial_moments) response_var_list=[response_var] extra_mat=[] sim={'params':params, 'weights':weights, 'moments':moments, 'moments_mat':moments_mat, 'weights_mat':weights_mat, 'response_mat':response_mat, 'response_var_list':response_var_list, 'initial_weights':weights, 'initial_moments':moments, 't_mat':t_mat, 'start_time':start_time, 'end_time':end_time, 'sim_time':sim_time, 'extra_mat':extra_mat} params_with_images=deepcopy(params) # make these point to the same thing params_with_images['saved_input_vectors']=params['saved_input_vectors'] fix_images_directories(params_with_images) status('Preemtive Save: %s' % save_sim_file,parent) zpickle.save(sim,save_sim_file) w=weights[layer] m=moments[layer] t0=time.time() for epoch in range(start_epoch,start_epoch+params['epoch_number']): t1=time.time() extra=train(epoch-start_epoch,params_with_images,w,m) if extra: extra_mat.append(extra) # copy over mask stuff if epoch==start_epoch: for i,p in enumerate(params['pattern_input']): params['pattern_input'][i]['mask']=params_with_images['pattern_input'][i]['mask'] dt1=time.time()-t1 dt0=time.time()-t0 frac=(epoch-start_epoch+1.0)/params['epoch_number'] eta=sec2str(round(dt0/frac-dt0)) status("%.4f...ETA %s" % (dt1,eta),parent) sim['moments_mat']=numpy.dstack( (sim['moments_mat'],m) ) test_stimulus_type=params['test_stimulus'][layer]['type'] if test_stimulus_type==1: # test OR single response_var=test_OR_single(params,weights) response_var_list[0]=response_var if not response_var: params['test_stimulus'][layer]['type']=0 else: for r,mat in zip(response_var,response_mat): mat.append(r[0]) t_mat.append(t_mat[-1]+params['iter_per_epoch']) if params['keep_every_epoch']: weights_mat.append(deepcopy(weights)) if params['display'] and epoch%params['epoch_per_display']==0: if parent: parent.Plot(sim) else: Plot(sim) if parent: parent.Yield() if parent.Stopping(): break if dt0>(60*60*20): # every 20 minutes status('Incremental Save: %s' % (save_sim_file),parent) zpickle.save(sim,save_sim_file) end_time=time.time() sim_time=end_time-start_time if params['display']: if parent: parent.Plot(sim) else: Plot(sim) status('Save: %s' % (save_sim_file),parent) zpickle.save(sim,save_sim_file)
def save(var, fname): print "Writing ", fname zpickle.save(var, fname) fname = hdf5_fname(fname) print "Writing ", fname hdf5_save_images(var, fname)
def run_sim(params=None, parent=None): if not params: params = default_params() elif isinstance(params, basestring): fname = params d = zpickle.load(fname) params = d['params'] if parent: save_sim_file = params['tmpfile'] params['display'] = 1 else: save_sim_file = params['save_sim_file'] if params['load_sim_file'] == params['tmpfile']: params['load_sim_file'] = '' if not save_sim_file is None and not save_sim_file: save_sim_file = 'sims/untitled.dat' # Deal the random number seed here if params['random_seed'] == 'clock': numpy.random.seed(None) else: numpy.random.seed(params['random_seed']) params['actual_random_seed'] = numpy.random.get_state() params['random_seed2'] = int(round(numpy.random.rand() * 1e6)) start_time = time.time() end_time = None sim_time = None num_channels = len(params['pattern_input']) num_moments = get_num_moments(params) layer = 0 test_stimulus = params['test_stimulus'][layer]['type'] total_num_inputs = 0 for p in params['pattern_input']: total_num_inputs = total_num_inputs + p['num_inputs'] num_neurons = prod(params['num_neurons']) if params['load_sim_file']: d = zpickle.load(params['load_sim_file']) load_sim_params = d['params'] weights = d['weights'] moments = d['moments'] individual_moments = d['individual_moments'] initial_weights = d['weights'] initial_moments = d['moments'] initial_individual_moments = d['individual_moments'] t_mat = None if params['continue']: t_mat = d['t_mat'] moments_mat = d['moments_mat'] individual_moments_mat = d['individual_moments_mat'] response_mat = d['response_mat'] weights_mat = d['weights_mat'] if not t_mat: moments_mat = None individual_moments_mat = None response_mat = None else: params['initial_weights'] = deepcopy(weights) params['initial_moments'] = deepcopy(moments) params['initial_individual_moments'] = deepcopy(individual_moments) initial_weights = params['initial_weights'] initial_moments = params['initial_moments'] initial_individual_moments = params['initial_individual_moments'] else: params['continue'] = 0 full_mask = get_full_mask(params) if not params['initial_weights']: params['initial_weights'] = [ numpy.asarray( numpy.random.rand(num_neurons, total_num_inputs) * (params['initial_weight_range'][1] - params['initial_weight_range'][0]) + params['initial_weight_range'][0], numpy.float64) ] # I love broadcasting! full_mask has a length of the number of inputs params['initial_weights'][ layer] = params['initial_weights'][layer] * full_mask initial_weights = params['initial_weights'] if not params['initial_moments']: params['initial_moments'] = [ numpy.asarray( numpy.random.rand(num_moments, num_neurons) * (params['initial_moment_range'][1] - params['initial_moment_range'][0]) + params['initial_moment_range'][0], numpy.float64) ] # same size as the weights - make into a list if you need to # have more of these params['initial_individual_moments'] = [ numpy.asarray( numpy.random.rand(num_neurons, total_num_inputs) * (params['initial_moment_range'][1] - params['initial_moment_range'][0]) + params['initial_moment_range'][0], numpy.float64) ] initial_moments = params['initial_moments'] initial_individual_moments = params['initial_individual_moments'] moments_mat = numpy.dstack((initial_moments[0], )) t_mat = None if not t_mat: # not loaded from file t_mat = [0] start_epoch = 1 moments_mat = numpy.dstack((initial_moments[0], )) if params['keep_every_epoch']: weights_mat = [initial_weights] individual_moments_mat = [initial_individual_moments] else: weights_mat = [] individual_moments_mat = [] response_mat = [] response_var = [] test_stimulus_type = params['test_stimulus'][layer]['type'] if test_stimulus_type == 1: # test OR single response_var = test_OR_single(params, initial_weights) if not response_var: params['test_stimulus'][layer]['type'] = 0 else: for r in response_var: response_mat.append([r[0]]) else: start_epoch = len(t_mat) test_stimulus_type = params['test_stimulus'][layer]['type'] response_var = [] if test_stimulus_type == 1: # test OR single response_var = test_OR_single(params, initial_weights) if not response_var: params['test_stimulus'][layer]['type'] = 0 else: for r, m in zip(response_var, response_mat): m.append(r[0]) weights = deepcopy(initial_weights) moments = deepcopy(initial_moments) individual_moments = deepcopy(initial_individual_moments) response_var_list = [response_var] extra_mat = [] sim = { 'params': params, 'weights': weights, 'moments': moments, 'individual_moments': individual_moments, 'moments_mat': moments_mat, 'individual_moments_mat': individual_moments_mat, 'weights_mat': weights_mat, 'response_mat': response_mat, 'response_var_list': response_var_list, 'initial_weights': initial_weights, 'initial_moments': initial_moments, 't_mat': t_mat, 'start_time': start_time, 'end_time': end_time, 'sim_time': sim_time, 'extra_mat': extra_mat } params_with_images = deepcopy(params) # make these point to the same thing params_with_images['saved_input_vectors'] = params['saved_input_vectors'] fix_images_directories(params_with_images, parent) if not save_sim_file is None: status('Preemtive Save: %s' % save_sim_file, parent) zpickle.save(sim, save_sim_file) w = weights[layer] m = moments[layer] ind_m = individual_moments[layer] t0 = time.time() last_display_time = t0 extra_input = [] try: for epoch in range(start_epoch, start_epoch + params['epoch_number']): t1 = time.time() extra = train(epoch - start_epoch, params_with_images, w, m, ind_m, extra_input) if extra: extra_mat.append(extra) # copy over mask stuff if epoch == start_epoch: for i, p in enumerate(params['pattern_input']): params['pattern_input'][i]['mask'] = params_with_images[ 'pattern_input'][i]['mask'] dt1 = time.time() - t1 dt0 = time.time() - t0 if (time.time() - last_display_time) > params['minimum_print_time']: last_display_time = time.time() frac = (epoch - start_epoch + 1.0) / params['epoch_number'] eta = sec2str(dt0 / frac - dt0) status("%.4f...ETA %s" % (dt1, eta), parent) sim['moments_mat'] = numpy.dstack((sim['moments_mat'], m)) test_stimulus_type = params['test_stimulus'][layer]['type'] if test_stimulus_type == 1: # test OR single response_var = test_OR_single(params, weights) response_var_list[0] = response_var if not response_var: params['test_stimulus'][layer]['type'] = 0 else: for r, mat in zip(response_var, response_mat): mat.append(r[0]) t_mat.append(t_mat[-1] + params['iter_per_epoch']) if params['keep_every_epoch']: weights_mat.append(deepcopy(weights)) individual_moments_mat.append(deepcopy(individual_moments)) if params['display'] and epoch % params['epoch_per_display'] == 0: if parent: parent.Plot(sim) else: Plot(sim) if parent: parent.Yield() if parent.Stopping(): break if dt0 > (60 * 60 * 20): # every 20 minutes if not save_sim_file is None: status('Incremental Save: %s' % (save_sim_file), parent) zpickle.save(sim, save_sim_file) except KeyboardInterrupt: status("Stopping!", parent) pass end_time = time.time() sim_time = end_time - start_time if params['display']: if parent: parent.Plot(sim) else: Plot(sim) tt = sec2str(time.time() - t0) if save_sim_file is None: status('Save: None. Total time %s' % (tt), parent) else: status('Save: %s. Total time %s' % (save_sim_file, tt), parent) zpickle.save(sim, save_sim_file) return sim
def save_params(params,fname): zpickle.save(params,fname)
def save_params(params, fname): zpickle.save(params, fname)
for i in range(len(var['im'])): var['im'][i]=(var['im'][i]-mn)/d*maxval var['im'][i]=var['im'][i].astype(resolution) var['im_scale_shift']=[d/maxval, mn] if __name__=="__main__": # cat stuff imfname='catim081604.pics' if not os.path.exists(imfname): var_raw=make_raw('cat',show=False) zpickle.save(var_raw,imfname) var_raw=zpickle.load('catim081604.pics') # var_raw['im']=[var_raw['im'][0]] # for debugging: use 1 image imfname='catim081604_dog13.pics' if not os.path.exists(imfname): var=make_dog(var_raw) set_resolution(var,'uint8') zpickle.save(var,imfname) imfname='catim081604_white.pics' if not os.path.exists(imfname): var=make_white(var_raw) set_resolution(var,'uint8') zpickle.save(var,imfname)