Exemplo n.º 1
0
 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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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