'Setup the data.'

def SetUpData(self, skip_outputs=False, skip_layernames=[]):

    hyp_list = []
    name_list = [[], [], []]
    for node in self.layer:
        if (not (node.is_input or node.is_output)):
            continue
        if (skip_outputs and node.is_output):
            continue
        if (node.name in skip_layernames):
            continue
        data_field = node.proto.data_field
        if node.hyperparams.fast_dropout:
            pass
        elif data_field.tied:
            self.tied_datalayer.append(node)
            node.tied_to = next((l for l in self.datalayer if (l.name == data_field.tied_to)))
        else:
            self.datalayer.append(node)
            hyp_list.append(node.hyperparams)
            if data_field.train:
                name_list[0].append(data_field.train)
            if data_field.validation:
                name_list[1].append(data_field.validation)
            if data_field.test:
                name_list[2].append(data_field.test)
    if self.t_op:
        op = self.t_op
    else:
        op = self.e_op
    handles = GetDataHandles(op, name_list, hyp_list, verbose=self.verbose)
    self.train_data_handler = handles[0]
    self.validation_data_handler = handles[1]
    self.test_data_handler = handles[2]
