def get_intermediate_beams(self, examples, verbose=False): intermediates = [[] for _ in examples] terminated = [set() for ex in examples] particles = [[ParsePath.empty(ex.context)] for ex in examples] distributions = [[1] for _ in xrange(len(examples))] num_iterations = get_num_iterations( self._config.iterations_per_utterance, examples) if verbose: iterations = verboserate(range(num_iterations), desc='Performing randomized search') else: iterations = xrange(num_iterations) for _ in iterations: for ex_idx, (beam, terminated_set) in enumerate( zip(particles, terminated)): intermediates[ex_idx].append(Beam( sorted(terminated_set, key=self._ranker, reverse=True) + sorted(beam, key=self._ranker, reverse=True))) terminated, particles, distributions = self.advance( terminated, particles, distributions) return [Beam(sorted(list(paths), key=self._ranker, reverse=True)) for paths in terminated], intermediates
def initial_beam(self, context): """Return the initial beam for the context. Args: context (Context) Returns: Beam """ return Beam([ParsePath.empty(context)])
def get_intermediate_beams(self, examples, verbose=False): # Start with beam_size empty paths for each example beams = [Beam([ParsePath.empty(ex.context) for _ in xrange(self._config.beam_size)]) for ex in examples] intermediates = [[] for _ in examples] num_iterations = get_num_iterations( self._config.iterations_per_utterance, examples) if verbose: iterations = verboserate(range(num_iterations), desc='Batched REINFORCE') else: iterations = xrange(num_iterations) for _ in iterations: for ex_idx, beam in enumerate(beams): intermediates[ex_idx].append(beam) beams = self.advance(beams) return beams, intermediates
def get_beams(self, examples, verbose=False): terminated = [set() for _ in examples] # initialize beams beams = [[ParsePath.empty(ex.context)] for ex in examples] # put all probability mass on the root distributions = [[1] for _ in examples] num_iterations = get_num_iterations( self._config.iterations_per_utterance, examples) iterations = xrange(num_iterations) if verbose: iterations = verboserate( iterations, desc='Performing randomized search') for _ in iterations: terminated, beams, distributions = self.advance( terminated, beams, distributions) return [Beam(sorted(list(paths), key=self._ranker, reverse=True)) for paths in terminated]