def __init__(self, filename="", remote_filename="", cores="4", storage=None, steps_per_frame=1): """ Initialize the tracker """ self.name = 'PVMtracker' if filename == "": filename = storage.get(remote_filename) self.prop_dict = CoreUtils.load_model(filename) logging.info("Loaded the dictionary %s", filename) PVM_Create.upgrade_dictionary_to_ver1_0(self.prop_dict) self.prop_dict['num_proc'] = int(cores) for k in range(len(self.prop_dict['learning_rates'])): self.prop_dict['learning_rates'][k][0] = 0.0 logging.info("Setting learning rate in layer %d to zero" % k) self.prop_dict["readout_learning_rate"][0] = 0.0 logging.info("Setting readout learning rate to zero") self.manager = Manager(self.prop_dict, 1000) self.executor = CoreUtils.ModelExecution(prop_dict=self.prop_dict, manager=self.manager, port=9100) self.executor.start(blocking=False) self.threshold = 32 self.image_size = self.prop_dict['input_array'].shape[:2][::-1] self.readout_heatmap = np.zeros(self.image_size, dtype=np.float) self.step_per_frame = steps_per_frame
def run_demo(): """ In this very simple demo a set of workers operate on a 500x500 image domain by randomly flipping selected bits. To make things faster the bit/byte flipping function is written in cython. :return: """ filename = "demo00_state.p.gz" if os.path.isfile(filename): state_dict = CoreUtils.load_model(filename) else: state_dict = generate_dict() manager = Manager(state_dict, 1000) executor = CoreUtils.ModelExecution(prop_dict=state_dict, manager=manager) executor.start(blocking=True) CoreUtils.save_model(state_dict, filename) print("Saving and running again in non blocking mode") executor.start(blocking=False) while manager.running(): executor.step() executor.finish() CoreUtils.save_model(state_dict, filename)