def interact(self): dump_stacktraces() from veles.interaction import Shell Shell.fix_netcat_colors() shell = Shell(self.workflow, name="Manhole") shell.thread_pool.pause() shell.initialize() try: shell.interact({ 'dump_stacktraces': dump_stacktraces, 'sys': sys, 'os': os, 'socket': socket, 'traceback': traceback, 'pause': shell.thread_pool.pause, 'resume': shell.thread_pool.resume, }) except (EOFError, BrokenPipeError): cry("Client has been dropped.") finally: shell.workflow.del_ref(shell) shell.thread_pool.resume() """
def __init__(self, workflow, **kwargs): kwargs["name"] = kwargs.get("name", "Kohonen") super(KohonenWorkflow, self).__init__(workflow, **kwargs) self.downloader = Downloader( self, url=root.kohonen.downloader.url, directory=root.kohonen.downloader.directory, files=root.kohonen.downloader.files) self.downloader.link_from(self.start_point) self.repeater.link_from(self.downloader) self.loader = KohonenLoader( self, name="Kohonen fullbatch loader", minibatch_size=root.kohonen.loader.minibatch_size, force_numpy=root.kohonen.loader.force_numpy) self.loader.link_from(self.repeater) # Kohonen training layer self.trainer = kohonen.KohonenTrainer( self, shape=root.kohonen.forward.shape, weights_filling=root.kohonen.forward.weights_filling, weights_stddev=root.kohonen.forward.weights_stddev, gradient_decay=root.kohonen.train.gradient_decay, radius_decay=root.kohonen.train.radius_decay) self.trainer.link_from(self.loader) self.trainer.link_attrs(self.loader, ("input", "minibatch_data")) # Loop decision self.decision = kohonen.KohonenDecision( self, max_epochs=root.kohonen.decision.epochs) self.decision.link_from(self.trainer) self.decision.link_attrs(self.loader, "minibatch_class", "last_minibatch", "class_lengths", "epoch_ended", "epoch_number") self.decision.link_attrs(self.trainer, "weights", "winners") self.ipython = Shell(self) self.ipython.link_from(self.decision) self.ipython.gate_skip = ~self.decision.epoch_ended self.repeater.link_from(self.ipython) self.ipython.gate_block = self.decision.complete self.end_point.link_from(self.decision) self.end_point.gate_block = ~self.decision.complete self.loader.gate_block = self.decision.complete # Error plotter self.plotters = [nn_plotting_units.KohonenHits(self), nn_plotting_units.KohonenInputMaps(self), nn_plotting_units.KohonenNeighborMap(self)] self.plotters[0].link_attrs(self.trainer, "shape") \ .link_from(self.ipython) self.plotters[0].input = self.decision.winners_mem self.plotters[0].gate_block = ~self.decision.epoch_ended self.plotters[1].link_attrs(self.trainer, "shape") \ .link_from(self.ipython) self.plotters[1].input = self.decision.weights_mem self.plotters[1].gate_block = ~self.decision.epoch_ended self.plotters[2].link_attrs(self.trainer, "shape") \ .link_from(self.ipython) self.plotters[2].input = self.decision.weights_mem self.plotters[2].gate_block = ~self.decision.epoch_ended
def __init__(self, workflow, **kwargs): kwargs["name"] = kwargs.get("name", "Kohonen") super(KohonenWorkflow, self).__init__(workflow, **kwargs) self.downloader = Downloader( self, url=root.kohonen.downloader.url, directory=root.kohonen.downloader.directory, files=root.kohonen.downloader.files) self.downloader.link_from(self.start_point) self.repeater.link_from(self.downloader) self.loader = KohonenLoader( self, name="Kohonen fullbatch loader", minibatch_size=root.kohonen.loader.minibatch_size, force_numpy=root.kohonen.loader.force_numpy) self.loader.link_from(self.repeater) # Kohonen training layer self.trainer = kohonen.KohonenTrainer( self, shape=root.kohonen.forward.shape, weights_filling=root.kohonen.forward.weights_filling, weights_stddev=root.kohonen.forward.weights_stddev, gradient_decay=root.kohonen.train.gradient_decay, radius_decay=root.kohonen.train.radius_decay) self.trainer.link_from(self.loader) self.trainer.link_attrs(self.loader, ("input", "minibatch_data")) # Loop decision self.decision = kohonen.KohonenDecision( self, max_epochs=root.kohonen.decision.epochs) self.decision.link_from(self.trainer) self.decision.link_attrs(self.loader, "minibatch_class", "last_minibatch", "class_lengths", "epoch_ended", "epoch_number") self.decision.link_attrs(self.trainer, "weights", "winners") self.ipython = Shell(self) self.ipython.link_from(self.decision) self.ipython.gate_skip = ~self.decision.epoch_ended self.repeater.link_from(self.ipython) self.ipython.gate_block = self.decision.complete self.end_point.link_from(self.decision) self.end_point.gate_block = ~self.decision.complete self.loader.gate_block = self.decision.complete # Error plotter self.plotters = [ nn_plotting_units.KohonenHits(self), nn_plotting_units.KohonenInputMaps(self), nn_plotting_units.KohonenNeighborMap(self) ] self.plotters[0].link_attrs(self.trainer, "shape") \ .link_from(self.ipython) self.plotters[0].input = self.decision.winners_mem self.plotters[0].gate_block = ~self.decision.epoch_ended self.plotters[1].link_attrs(self.trainer, "shape") \ .link_from(self.ipython) self.plotters[1].input = self.decision.weights_mem self.plotters[1].gate_block = ~self.decision.epoch_ended self.plotters[2].link_attrs(self.trainer, "shape") \ .link_from(self.ipython) self.plotters[2].input = self.decision.weights_mem self.plotters[2].gate_block = ~self.decision.epoch_ended