'Extracts features and advances a batch using the oracle path.
NOTE(danielandor) For now this method cannot be called during training.
That is to say, unroll_using_oracle for this component must be set to true.
This will be fixed by separating train_with_oracle and train_with_inference.
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:
state handle: final state after advancing'

def build_greedy_inference(self, state, network_states, during_training=False):

    logging.info('Building    component:    %s', self.spec.name)
    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):
        if during_training:
            (state.handle, fixed_embeddings) = fetch_differentiable_fixed_embeddings(self, state, stride)
        else:
            (state.handle, fixed_embeddings) = fetch_fast_fixed_embeddings(self, state)
    linked_embeddings = [fetch_linked_embedding(self, network_states, spec) for spec in self.spec.linked_feature]
    with tf.variable_scope(self.name, reuse=True):
        tensors = self.network.create(fixed_embeddings, linked_embeddings, None, None, during_training=during_training, stride=stride)
    update_network_states(self, tensors, network_states, stride)
    return state.handle
