Beispiel #1
0
 def __init__(self,
              variables,
              mini_batch_size,
              state_updates,
              dataset,
              updates=None):
     theano_variables = []
     monitored_quantities = []
     for variable in variables:
         if isinstance(variable, MonitoredQuantity):
             monitored_quantities.append(variable)
         else:
             theano_variables.append(variable)
     self.theano_variables = theano_variables
     self.monitored_quantities = monitored_quantities
     variable_names = [v.name for v in variables]
     if len(set(variable_names)) < len(variables):
         raise ValueError("variables should have different names")
     self.theano_buffer = AggregationBuffer(theano_variables)
     self.monitored_quantities_buffer = MonitoredQuantityBuffer(
         monitored_quantities)
     self.dataset = dataset
     self.updates = updates
     self.mini_batch_size = mini_batch_size
     self._compile(state_updates)
Beispiel #2
0
    def __init__(self, variables, **kwargs):
        kwargs.setdefault("before_training", True)
        super(TrainingDataMonitoring, self).__init__(**kwargs)
        self.add_condition(['after_batch'], arguments=('just_aggregate', ))

        self._non_variables = []
        self._variables = []
        for variable_or_not in variables:
            if isinstance(variable_or_not, theano.Variable):
                self._variables.append(variable_or_not)
            elif isinstance(variable_or_not, MonitoredQuantity):
                self._non_variables.append(variable_or_not)
            else:
                raise ValueError("can not monitor {}".format(variable_or_not))

        self._non_variables = MonitoredQuantityBuffer(self._non_variables)
        self._required_for_non_variables = AggregationBuffer(
            [take_last(v) for v in self._non_variables.requires])
        self._variables = AggregationBuffer(self._variables,
                                            use_take_last=True)
        self._last_time_called = -1