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
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
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)
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)