Exemplo n.º 1
0
    def build_greedy_inference(self,
                               state,
                               network_states,
                               during_training=False):
        """Annotates a batch of documents using network scores.

    Args:
      state: MasterState from the 'AdvanceMaster' op that advances the
          underlying master to this component.
      network_states: dictionary of component NetworkState objects
      during_training: whether the graph is being constructed during training

    Returns:
      Handle to the state once inference is complete for this Component.

    Raises:
      RuntimeError: if fixed features are configured
    """
        LOGGING.info('Building component: %s', self.spec.name)
        if self.spec.fixed_feature:
            raise RuntimeError(
                'Fixed features are not compatible with bulk annotation. '
                'Use the "bulk-features" component instead.')
        linked_embeddings = [
            fetch_linked_embedding(self, network_states, spec)
            for spec in self.spec.linked_feature
        ]

        if during_training:
            stride = state.current_batch_size * self.training_beam_size
        else:
            stride = state.current_batch_size * self.inference_beam_size
        self.network.pre_create(stride)

        with tf.variable_scope(self.name, reuse=True):
            network_tensors = self.network.create([], linked_embeddings, None,
                                                  None, during_training,
                                                  stride)

        update_network_states(self, network_tensors, network_states, stride)

        logits = self.network.get_bulk_predictions(stride, network_tensors)
        if logits is None:
            # The network does not produce custom bulk predictions; default to logits.
            logits = self.network.get_logits(network_tensors)
            logits = tf.cond(self.locally_normalize,
                             lambda: tf.nn.log_softmax(logits), lambda: logits)
            if self._output_as_probabilities:
                logits = tf.nn.softmax(logits)
        handle = dragnn_ops.bulk_advance_from_prediction(state.handle,
                                                         logits,
                                                         component=self.name)

        self._add_runtime_hooks()
        return handle
Exemplo n.º 2
0
  def build_greedy_inference(self, state, network_states,
                             during_training=False):
    """Annotates a batch of documents using network scores.

    Args:
      state: MasterState from the 'AdvanceMaster' op that advances the
          underlying master to this component.
      network_states: dictionary of component NetworkState objects
      during_training: whether the graph is being constructed during training

    Returns:
      Handle to the state once inference is complete for this Component.

    Raises:
      RuntimeError: if fixed features are configured
    """
    logging.info('Building component: %s', self.spec.name)
    if self.spec.fixed_feature:
      raise RuntimeError(
          'Fixed features are not compatible with bulk annotation. '
          'Use the "bulk-features" component instead.')
    linked_embeddings = [
        fetch_linked_embedding(self, network_states, spec)
        for spec in self.spec.linked_feature
    ]

    if during_training:
      stride = state.current_batch_size * self.training_beam_size
    else:
      stride = state.current_batch_size * self.inference_beam_size
    self.network.pre_create(stride)

    with tf.variable_scope(self.name, reuse=True):
      network_tensors = self.network.create([], linked_embeddings, None, None,
                                            during_training, stride)

    update_network_states(self, network_tensors, network_states, stride)

    logits = self.network.get_bulk_predictions(stride, network_tensors)
    if logits is None:
      # The network does not produce custom bulk predictions; default to logits.
      logits = self.network.get_logits(network_tensors)
      logits = tf.cond(self.locally_normalize,
                       lambda: tf.nn.log_softmax(logits), lambda: logits)
      if self._output_as_probabilities:
        logits = tf.nn.softmax(logits)
    handle = dragnn_ops.bulk_advance_from_prediction(
        state.handle, logits, component=self.name)

    self._add_runtime_hooks()
    return handle
Exemplo n.º 3
0
    def build_greedy_inference(self,
                               state,
                               network_states,
                               during_training=False):
        """Annotates a batch of documents using network scores.

    Args:
      state: MasterState from the 'AdvanceMaster' op that advances the
          underlying master to this component.
      network_states: dictionary of component NetworkState objects
      during_training: whether the graph is being constructed during training

    Returns:
      Handle to the state once inference is complete for this Component.

    Raises:
      RuntimeError: if fixed features are configured
    """
        logging.info('Building component: %s', self.spec.name)
        if self.spec.fixed_feature:
            raise RuntimeError(
                'Fixed features are not compatible with bulk annotation. '
                'Use the "bulk-features" component instead.')
        linked_embeddings = [
            fetch_linked_embedding(self, network_states, spec)
            for spec in self.spec.linked_feature
        ]

        if during_training:
            stride = state.current_batch_size * self.training_beam_size
        else:
            stride = state.current_batch_size * self.inference_beam_size

        with tf.variable_scope(self.name, reuse=True):
            network_tensors = self.network.create([], linked_embeddings, None,
                                                  None, during_training,
                                                  stride)

        update_network_states(self, network_tensors, network_states, stride)

        logits = self.network.get_logits(network_tensors)
        return dragnn_ops.bulk_advance_from_prediction(state.handle,
                                                       logits,
                                                       component=self.name)
Exemplo n.º 4
0
  def build_greedy_inference(self, state, network_states,
                             during_training=False):
    """Annotates a batch of documents using network scores.

    Args:
      state: MasterState from the 'AdvanceMaster' op that advances the
          underlying master to this component.
      network_states: dictionary of component NetworkState objects
      during_training: whether the graph is being constructed during training

    Returns:
      Handle to the state once inference is complete for this Component.

    Raises:
      RuntimeError: if fixed features are configured
    """
    logging.info('Building component: %s', self.spec.name)
    if self.spec.fixed_feature:
      raise RuntimeError(
          'Fixed features are not compatible with bulk annotation. '
          'Use the "bulk-features" component instead.')
    linked_embeddings = [
        fetch_linked_embedding(self, network_states, spec)
        for spec in self.spec.linked_feature
    ]

    if during_training:
      stride = state.current_batch_size * self.training_beam_size
    else:
      stride = state.current_batch_size * self.inference_beam_size

    with tf.variable_scope(self.name, reuse=True):
      network_tensors = self.network.create(
          [], linked_embeddings, None, None, during_training, stride)

    update_network_states(self, network_tensors, network_states, stride)

    logits = self.network.get_logits(network_tensors)
    return dragnn_ops.bulk_advance_from_prediction(
        state.handle, logits, component=self.name)