'Advances a batch using oracle paths, returning the overall CE cost.
Args:
state: MasterState from the \'AdvanceMaster\' op that advances the
underlying master to this component.
network_states: dictionary of component NetworkState objects
Returns:
(state handle, cost, correct, total): TF ops corresponding to the final
state after unrolling, the total cost, the total number of correctly
predicted actions, and the total number of actions.
Raises:
RuntimeError: if fixed features are configured.'

def build_greedy_training(self, state, network_states):

    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]
    stride = (state.current_batch_size * self.training_beam_size)
    with tf.variable_scope(self.name, reuse=True):
        network_tensors = self.network.create([], linked_embeddings, None, None, True, stride)
    update_network_states(self, network_tensors, network_states, stride)
    logits = self.network.get_logits(network_tensors)
    (state.handle, gold) = dragnn_ops.bulk_advance_from_oracle(state.handle, component=self.name)
    (cost, correct, total) = build_cross_entropy_loss(logits, gold)
    cost = self.add_regularizer(cost)
    return (state.handle, cost, correct, total)
