def serialize(self, serializer): current_position = serializer('current_position', self.current_position) epoch = serializer('epoch', self.epoch) is_new_epoch = serializer('is_new_epoch', self.is_new_epoch) order = self._state.order if order is not None: try: serializer('order', order) except KeyError: serializer('_order', order) self._state = _statemachine.IteratorState( current_position, epoch, is_new_epoch, order) try: self._previous_epoch_detail = serializer( 'previous_epoch_detail', self._previous_epoch_detail) except KeyError: # guess previous_epoch_detail for older version self._previous_epoch_detail = self.epoch + \ (self.current_position - self.batch_size) / self._epoch_size if self.epoch_detail > 0: self._previous_epoch_detail = max( self._previous_epoch_detail, 0.) else: self._previous_epoch_detail = -1.
def _reset_state(self, current_position, epoch, is_new_epoch, order): if self._finalized: raise NotImplementedError( 'Reset of finalized MultiProcessIterator is currently not ' 'supported.') self._state = _statemachine.IteratorState(current_position, epoch, is_new_epoch, order) self._comm.reset(self._state)
def reset(self): if self.order_sampler: order = self.order_sampler( numpy.arange(len(self.dataset)), 0) else: order = None self._state = _statemachine.IteratorState(0, 0, False, order) self._previous_epoch_detail = -1.
def serialize(self, serializer): current_position = serializer( 'current_position', self.current_position) epoch = serializer('epoch', self.epoch) is_new_epoch = serializer('is_new_epoch', self.is_new_epoch) order = serializer('_order', self._state.order) self._state = _statemachine.IteratorState( current_position, epoch, is_new_epoch, order) self._previous_epoch_detail = serializer( 'previous_epoch_detail', self._previous_epoch_detail) # Old version serialized ``None``. if self._previous_epoch_detail is None: self._previous_epoch_detail = -1. self._next = None