def __init__(self, workflow, **kwargs): super(EnsembleWorkflowBase, self).__init__(workflow, **kwargs) self.ensemble = \ self.MANAGER_UNIT(self, **kwargs) # pylint: disable=E1102 self.repeater = Repeater(self) self.repeater.link_from(self.start_point) self.ensemble.link_from(self.repeater) self.repeater.link_from(self.ensemble) self.end_point.link_from(self.ensemble) self.end_point.gate_block = ~self.ensemble.complete self.repeater.gate_block = self.ensemble.complete
class EnsembleWorkflowBase(Workflow): MANAGER_UNIT = None def __init__(self, workflow, **kwargs): super(EnsembleWorkflowBase, self).__init__(workflow, **kwargs) self.ensemble = \ self.MANAGER_UNIT(self, **kwargs) # pylint: disable=E1102 self.repeater = Repeater(self) self.repeater.link_from(self.start_point) self.ensemble.link_from(self.repeater) self.repeater.link_from(self.ensemble) self.end_point.link_from(self.ensemble) self.end_point.gate_block = ~self.ensemble.complete self.repeater.gate_block = self.ensemble.complete
def __init__(self, workflow, **kwargs): super(OptimizationWorkflow, self).__init__(workflow, **kwargs) self.optimizer = GeneticsOptimizer(self, **kwargs) self.repeater = Repeater(self) self.repeater.link_from(self.start_point) self.optimizer.link_from(self.repeater) self.plotter_max = AccumulatingPlotter( self, name="Genetic Optimization Fitness", plot_style="g-", redraw_plot=False, clear_plot=True) if self.plotters_are_enabled: self.plotter_max.link_attrs(self.optimizer, ("input", "max_fitness")) else: self.plotter_max.input = 0 self.plotter_max.link_from(self.optimizer) self.plotter_max.gate_skip = ~self.optimizer.generation_changed self.plotter_avg = AccumulatingPlotter( self, name="Genetic Optimization Fitness", plot_style="b-", redraw_plot=True) if self.plotters_are_enabled: self.plotter_avg.link_attrs(self.optimizer, ("input", "avg_fitness")) else: self.plotter_avg.input = 0 self.plotter_avg.link_from(self.plotter_max) self.plotter_avg.gate_skip = ~self.optimizer.generation_changed self.repeater.link_from(self.plotter_avg) self.end_point.link_from(self.plotter_avg) self.end_point.gate_block = ~self.optimizer.complete self.repeater.gate_block = self.optimizer.complete self.json_encoder = ConfigJSONEncoder
class BenchmarkWorkflow(StandardWorkflow): def create_workflow(self): self.loader = self.real_loader = BenchmarkLoader( self, minibatch_size=BenchmarkLoader.BATCH, force_numpy=True) # do not preload all dataset to device self.loader.link_from(self.start_point) self.t0 = Timer(self, name="Timer 0", sync_iterations=(1, )).link_from(self.loader) self.repeater.link_from(self.t0) self.link_forwards(("input", "minibatch_data"), self.loader) self.forwards[0].unlink_before() self.forwards[0].link_from(self.repeater) self.t1 = Timer(self, name="Timer 1", sync_iterations=(1, )).link_from(self.forwards[-2]) self.repeater.link_from(self.t1) self.forwards[-1].gate_block = ~self.t1.complete self.forwards[0].gate_block = self.t1.complete self.link_evaluator(self.forwards[-1]) self.link_decision(self.evaluator) self.decision.gate_skip = Bool(True) last_gd = self.link_gds(self.decision) self.t2 = Timer(self, name="Timer 2", sync_iterations=(1, )).link_from(self.gds[-1]) self.repeater2 = Repeater(self).link_from(self.t2) self.gds[-2].unlink_before() self.gds[-2].link_from(self.repeater2) self.t3 = Timer(self, name="Timer 3", sync_iterations=(1, )).link_from(last_gd) self.repeater2.link_from(self.t3) self.end_point.link_from(self.t3) self.end_point.gate_block = ~self.t3.complete self.repeater2.gate_block = self.t3.complete def initialize(self, device, **kwargs): super(BenchmarkWorkflow, self).initialize(device, **kwargs) self.forwards[-1].unlink_before() self.forwards[-1].link_from(self.repeater)
class BenchmarkWorkflow(StandardWorkflow): def create_workflow(self): self.loader = self.real_loader = BenchmarkLoader( self, minibatch_size=BenchmarkLoader.BATCH, force_numpy=True) # do not preload all dataset to device self.loader.link_from(self.start_point) self.t0 = Timer(self, name="Timer 0", sync_iterations=(1,)).link_from(self.loader) self.repeater.link_from(self.t0) self.link_forwards(("input", "minibatch_data"), self.loader) self.forwards[0].unlink_before() self.forwards[0].link_from(self.repeater) self.t1 = Timer(self, name="Timer 1", sync_iterations=(1,)).link_from(self.forwards[-2]) self.repeater.link_from(self.t1) self.forwards[-1].gate_block = ~self.t1.complete self.forwards[0].gate_block = self.t1.complete self.link_evaluator(self.forwards[-1]) self.link_decision(self.evaluator) self.decision.gate_skip = Bool(True) last_gd = self.link_gds(self.decision) self.t2 = Timer(self, name="Timer 2", sync_iterations=(1,)).link_from(self.gds[-1]) self.repeater2 = Repeater(self).link_from(self.t2) self.gds[-2].unlink_before() self.gds[-2].link_from(self.repeater2) self.t3 = Timer(self, name="Timer 3", sync_iterations=(1,)).link_from(last_gd) self.repeater2.link_from(self.t3) self.end_point.link_from(self.t3) self.end_point.gate_block = ~self.t3.complete self.repeater2.gate_block = self.t3.complete def initialize(self, device, **kwargs): super(BenchmarkWorkflow, self).initialize(device, **kwargs) self.forwards[-1].unlink_before() self.forwards[-1].link_from(self.repeater)
class OptimizationWorkflow(AcceleratedWorkflow): KWATTRS = set(GeneticsOptimizer.KWATTRS) def __init__(self, workflow, **kwargs): super(OptimizationWorkflow, self).__init__(workflow, **kwargs) self.optimizer = GeneticsOptimizer(self, **kwargs) self.repeater = Repeater(self) self.repeater.link_from(self.start_point) self.optimizer.link_from(self.repeater) self.plotter_max = AccumulatingPlotter( self, name="Genetic Optimization Fitness", plot_style="g-", redraw_plot=False, clear_plot=True) if self.plotters_are_enabled: self.plotter_max.link_attrs(self.optimizer, ("input", "max_fitness")) else: self.plotter_max.input = 0 self.plotter_max.link_from(self.optimizer) self.plotter_max.gate_skip = ~self.optimizer.generation_changed self.plotter_avg = AccumulatingPlotter( self, name="Genetic Optimization Fitness", plot_style="b-", redraw_plot=True) if self.plotters_are_enabled: self.plotter_avg.link_attrs(self.optimizer, ("input", "avg_fitness")) else: self.plotter_avg.input = 0 self.plotter_avg.link_from(self.plotter_max) self.plotter_avg.gate_skip = ~self.optimizer.generation_changed self.repeater.link_from(self.plotter_avg) self.end_point.link_from(self.plotter_avg) self.end_point.gate_block = ~self.optimizer.complete self.repeater.gate_block = self.optimizer.complete self.json_encoder = ConfigJSONEncoder