Ejemplo n.º 1
0
def self_test_train():
  """ Self test the model with toy data, training part.
  """
  # Load and prepare fake data
  buckets, buckets_collapsed, bucket_sizes, train_tuple_b, word2id, word_embeddings = \
      fake_data_with_buckets()
  mydata = MyData(train_tuple_b, train_tuple_b, train_tuple_b, word2id, word_embeddings)
  assert(mydata.train_buckets == buckets)
  assert(mydata.train_bucket_sizes == bucket_sizes)
  assert(mydata.valid_buckets == buckets)
  assert(mydata.valid_bucket_sizes == bucket_sizes)
  buckets_t = zip(*buckets)

  # Create model with vocabulary of 10, 2 small buckets
  config = SelfTestConfig()
  config.vocab_size = 10
  config.max_sentence_num = max(buckets_t[0])
  config.max_question_length = max(buckets_t[1])
  config.max_sentence_length = max(buckets_t[2])
  config.data_type = data_type()
  config.init_scale = np.sqrt(6.0 / (config.word_embed_size + config.rnn_hidden_size))
  eval_config = SelfTestConfig()
  eval_config.vocab_size = 10
  eval_config.max_question_length = max(buckets_t[1])
  eval_config.max_sentence_num = max(buckets_t[0])
  eval_config.max_sentence_length = max(buckets_t[2])
  eval_config.data_type = data_type()
  eval_config.batch_size = 2
  eval_config.init_scale = np.sqrt(6.0 / (config.word_embed_size + config.rnn_hidden_size))

  with tf.Session() as session:
    # Set random seed to fixed number
    tf.set_random_seed(FLAGS.tf_random_seed)
    random.seed(FLAGS.random_seed)
    np.random.seed(FLAGS.random_seed)

    initializer = tf.random_uniform_initializer(-config.init_scale,
                                                config.init_scale)
    embedding_initializer = tf.constant_initializer(word_embeddings,
                                                    dtype=config.data_type)
    with tf.variable_scope("model", reuse=None, initializer=initializer):
      m = MIL_AnswerTrigger(config=config, buckets=buckets,
                            embedding_initializer=embedding_initializer)
    with tf.variable_scope("model", reuse=True, initializer=initializer):
      m_valid = MIL_AnswerTrigger(config=eval_config, buckets=buckets,
                                  is_training=False,
                                  embedding_initializer=embedding_initializer)

    train_model(FLAGS, session, m, config, mydata, m_valid)
    save_checkpoint(FLAGS, session, m)
Ejemplo n.º 2
0
def train():
  """Train the model."""
  buckets = BUCKETS
  train_tuple_b, valid_tuple_b, test_tuple_b, word2id, word_embeddings = \
      prep_data()
  mydata = MyData(train_tuple_b, valid_tuple_b, test_tuple_b,
                  word2id, word_embeddings)
  assert(mydata.train_buckets == buckets)
  assert(mydata.valid_buckets == buckets)
  buckets_t = zip(*buckets)

  # Create model
  config = get_config()
  config.vocab_size = len(word2id)
  config.max_sentence_num = max(buckets_t[0])
  config.max_question_length = max(buckets_t[1])
  config.max_sentence_length = max(buckets_t[2])
  config.data_type = data_type()
  config.init_scale = np.sqrt(6.0 / (config.word_embed_size + config.rnn_hidden_size))
  print_config(config)
  eval_config = get_config()
  eval_config.vocab_size = len(word2id)
  eval_config.max_sentence_num = max(buckets_t[0])
  eval_config.max_question_length = max(buckets_t[1])
  eval_config.max_sentence_length = max(buckets_t[2])
  eval_config.data_type = data_type()
  eval_config.batch_size = 10
  eval_config.init_scale = np.sqrt(6.0 / (config.word_embed_size + config.rnn_hidden_size))

  with tf.Session() as session:
    # Set random seed to fixed number
    tf.set_random_seed(FLAGS.tf_random_seed)
    random.seed(FLAGS.random_seed)
    np.random.seed(FLAGS.random_seed)

    initializer = tf.random_uniform_initializer(-config.init_scale,
                                                config.init_scale)
    embedding_initializer = tf.constant_initializer(word_embeddings,
                                                    dtype=config.data_type)
    with tf.variable_scope("model", reuse=None, initializer=initializer):
      m = MIL_AnswerTrigger(config=config, buckets=buckets,
                            embedding_initializer=embedding_initializer)
    with tf.variable_scope("model", reuse=True, initializer=initializer):
      m_valid = MIL_AnswerTrigger(config=eval_config, buckets=buckets,
                                  is_training=False,
                                  embedding_initializer=embedding_initializer)

    train_model(FLAGS, session, m, config, mydata, m_valid)
Ejemplo n.º 3
0
def main():
    config = get_config()
    if config['train'] and not config['resume']:
        for key in ['folder_log', 'folder_out']:
            if os.path.exists(config[key]):
                raise FileExistsError(config[key])
            os.makedirs(config[key])
        with open(os.path.join(config['folder_out'], 'config.yaml'), 'w') as f:
            yaml.safe_dump(config, f)
    data_loaders, image_shape = get_data_loaders(config)
    config['image_shape'] = image_shape
    net = get_model(config)
    if config['train']:
        train_model(config, data_loaders, net)
    test_model(config, data_loaders, net)
    return
Ejemplo n.º 4
0
def main():
    gpus = tf.config.experimental.list_physical_devices('GPU')
    for gpu in gpus:
        tf.config.experimental.set_memory_growth(gpu, True)
    config = get_config()
    if config['train'] and not config['resume']:
        for key in ['folder_log', 'folder_out']:
            if os.path.exists(config[key]):
                raise FileExistsError(config[key])
            os.makedirs(config[key])
        with open(os.path.join(config['folder_out'], 'config.yaml'), 'w') as f:
            yaml.safe_dump(config, f)
    strategy = tf.distribute.MirroredStrategy()
    data_loaders = get_data_loaders(strategy, config)
    net = get_model(config)
    if config['train']:
        train_model(strategy, config, data_loaders, net)
    test_model(strategy, config, data_loaders, net)
    return
Ejemplo n.º 5
0
def main():
    config = get_config()
    if config['train'] and not config['resume']:
        for key in ['folder_log', 'folder_out']:
            if os.path.exists(config[key]):
                raise FileExistsError(config[key])
            os.makedirs(config[key])
        with open(os.path.join(config['folder_out'], 'config.yaml'), 'w') as f:
            yaml.safe_dump(config, f)
    data_loaders, image_shape = get_data_loaders(config)
    config['image_shape'] = image_shape
    if 'crop_shape' not in config:
        config['crop_shape'] = [
            val if idx == 0 else val // 2
            for idx, val in enumerate(image_shape)
        ]
    net = get_model(config)
    net_gen = None if config['path_pretrain'] is None else get_model(config)
    if config['train']:
        train_model(config, data_loaders, net, net_gen)
    test_model(config, data_loaders, net)
    return
Ejemplo n.º 6
0
def main():

    parser = argparse.ArgumentParser(description='Trainning model ... ')
    #
    '''
    modify here accordingly ...
    '''
    #
    parser.add_argument('-fd',
                        '--FileData',
                        required=False,
                        help='Path of the dataset')
    #
    parser.add_argument('-d',
                        '--DimModel',
                        required=False,
                        help='Dimension of LSTM model ')
    parser.add_argument('-s',
                        '--Seed',
                        required=False,
                        help='Seed of random state')
    #
    parser.add_argument('-fp',
                        '--FilePretrain',
                        required=False,
                        help='File of pretrained model')
    parser.add_argument('-me',
                        '--MaxEpoch',
                        required=False,
                        help='Max epoch number of training')
    parser.add_argument('-op',
                        '--Optimizer',
                        required=False,
                        help='Optimizer of training')
    #
    parser.add_argument('-do',
                        '--DropOut',
                        required=False,
                        help='Drop-out rate')
    #
    parser.add_argument('-m1',
                        '--Map1',
                        required=False,
                        help='First Train Map')
    parser.add_argument('-m2',
                        '--Map2',
                        required=False,
                        help='Second Train Map')
    #
    args = parser.parse_args()
    #
    if args.FileData == None:
        args.FileData = None
    #
    if args.MaxEpoch == None:
        args.MaxEpoch = numpy.int32(2)
    else:
        args.MaxEpoch = numpy.int32(args.MaxEpoch)
    if args.Optimizer == None:
        args.Optimizer = 'adam'
    else:
        args.Optimizer = args.Optimizer
    #
    if args.DimModel == None:
        args.DimModel = numpy.int32(100)
    else:
        args.DimModel = numpy.int32(args.DimModel)
    if args.Seed == None:
        args.Seed = numpy.int32(12345)
    else:
        args.Seed = numpy.int32(args.Seed)
    if args.DropOut == None:
        args.DropOut = numpy.float32(0.9)
    else:
        args.DropOut = numpy.float32(args.DropOut)
    #
    if args.Map1 == None:
        args.Map1 = 'grid'
    else:
        args.Map1 = str(args.Map1)
    if args.Map2 == None:
        args.Map2 = 'jelly'
    else:
        args.Map2 = str(args.Map2)
    #
    id_process = os.getpid()
    time_current = datetime.datetime.now().isoformat()
    #
    tag_model = '_PID=' + str(id_process) + '_TIME=' + time_current
    #
    path_track = './tracks/track' + tag_model + '/'
    file_log = os.path.abspath(path_track + 'log.txt')
    path_save = path_track
    command_mkdir = 'mkdir -p ' + os.path.abspath(path_track)
    os.system(command_mkdir)
    #
    ## show values ##
    '''
    '--FileData', '--DimModel', '--Seed'
    '--FilePretrain', '--MaxEpoch', '--Optimizer'
    '--DropOut', '--Map1', '--Map2'
    '''
    print("PID is : %s" % str(id_process))
    print("TIME is : %s" % time_current)
    #
    print("FileData is : %s" % args.FileData)
    print("DimModel is : %s" % str(args.DimModel))
    print("Seed is : %s" % str(args.Seed))
    print("FilePretrain is : %s" % args.FilePretrain)
    print("MaxEpoch is : %s" % str(args.MaxEpoch))
    print("Optimizer is : %s" % args.Optimizer)
    print("DropOut is : %s" % str(args.DropOut))
    print("Map1 is : %s" % str(args.Map1))
    print("Map2 is : %s" % str(args.Map2))
    #
    dict_args = {
        'PID': id_process,
        'TIME': time_current,
        'FileData': args.FileData,
        'DimModel': args.DimModel,
        'Seed': args.Seed,
        'FilePretrain': args.FilePretrain,
        'MaxEpoch': args.MaxEpoch,
        'Optimizer': args.Optimizer,
        'DropOut': args.DropOut,
        'Map1': args.Map1,
        'Map2': args.Map2
    }
    #
    input_trainer = {
        'random_seed': args.Seed,
        'path_rawdata': args.FileData,
        'path_start_model': args.FilePretrain,
        'drop_out_rate': args.DropOut,
        'max_epoch': args.MaxEpoch,
        'dim_model': args.DimModel,
        'optimizer': args.Optimizer,
        'save_file_path': path_save,
        'log_file': file_log,
        'args': dict_args,
        'maps_train': [args.Map1, args.Map2]
    }
    #
    run_model.train_model(input_trainer)
Ejemplo n.º 7
0
    help="log metrics to Weights & Biases",
)
args = parser.parse_args()

date_now = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S-%f")
current_dir = os.path.dirname(os.path.realpath(__file__))
outputs_dir = os.path.join(current_dir, os.pardir, os.pardir, os.pardir,
                           "outputs", "training")
outputs_dir = os.path.normpath(outputs_dir)
args.output_dir = os.path.join(outputs_dir,
                               f"{args.model}-{args.dataset}-{date_now}/")

train_dataset = load_ocnliDataset()
train_hugdataset = HuggingFaceDataset(train_dataset)
val_dataset = load_ocnliDataset(split="dev")
val_hugdataset = HuggingFaceDataset(val_dataset)

train_text, train_labels, eval_text, eval_labels = dataset_for_training(
    train_hugdataset, val_hugdataset)

config = BertConfig.from_pretrained(
    args.tokenizer)  # "hfl/chinese-macbert-base"
config.output_attentions = False
config.output_token_type_ids = False
# config.max_length = 30
tokenizer = BertTokenizerFast.from_pretrained(args.tokenizer,
                                              config=config,
                                              max_length=35)

train_model(args, train_text, train_labels, eval_text, eval_labels, tokenizer)
map_sequence = ['grid', 'l', 'jelly']

if __name__ == '__main__':
    print('Start Map tester ...')

    # declare the parser
    parser = argparse.ArgumentParser(description='run the hong yuan moel')

    # add the argument
    parser.add_argument('-log_file', help='log file content', required=True)
    parser.add_argument('-save_file_path',
                        help='save file path',
                        required=True)
    parser.add_argument('-seed', help='random seed', required=True)
    parser.add_argument('-test_map', help='map_for_test', required=True)
    parser.add_argument('-dim_model', help='depth of the model', default=100)

    # parse the argument
    args = parser.parse_args()

    input_trainer['log_file'] = args.log_file
    input_trainer['save_file_path'] = args.save_file_path
    input_trainer['seed'] = int(args.seed)
    input_trainer['maps_train'] = [
        map_sequence[idx] for idx in range(3) if idx != int(args.test_map)
    ]
    input_trainer['dim_model'] = int(args.dim_model)

    print(input_trainer)
    run_model.train_model(input_trainer)
Ejemplo n.º 9
0
    args = get_arguments()
    # dataloaders, args.image_planes, args.image_full_height, args.image_full_width = get_dataloaders(args)
    dataloaders, image_shapes = get_data_loaders(args)
    args.image_planes, args.image_full_height, args.image_full_width = image_shapes
    args.image_crop_height = args.image_full_height // 2
    args.image_crop_width = args.image_full_width // 2
    if args.train:
        if not os.path.exists(args.folder):
            os.mkdir(args.folder)
        exclude_keys = [
            'path_config',
            'folder',
            'train',
            'file_args',
            'file_log',
            'file_model',
            'file_result_base',
        ]
        args_dict = {
            key: val
            for key, val in args.__dict__.items() if key not in exclude_keys
        }
        with open(os.path.join(args.folder, args.file_args), 'w') as f:
            yaml.safe_dump(args_dict, f)
        net = get_model(args).cuda()
        train_model(args, net, dataloaders)
    else:
        net = get_model(args, os.path.join(args.folder,
                                           args.file_model)).cuda()
        test_model(args, net, dataloaders)
Ejemplo n.º 10
0
def main():
    parser = argparse.ArgumentParser(description='Trainning model ... ')
    #

    # The directory from which to find the data. default in data_processors is './data/'
    parser.add_argument('-fd',
                        '--FileData',
                        required=False,
                        help='Path of the dataset')
    #
    parser.add_argument('-d',
                        '--DimModel',
                        required=False,
                        help='Dimension of LSTM model ')
    parser.add_argument('-s',
                        '--Seed',
                        required=False,
                        help='Seed of random state')

    parser.add_argument('-fp',
                        '--FilePretrain',
                        required=False,
                        help='File of pretrained model')
    parser.add_argument('-me',
                        '--MaxEpoch',
                        required=False,
                        help='Max epoch number of training')

    parser.add_argument('-do',
                        '--DropOut',
                        required=False,
                        help='Drop-out rate')
    #
    parser.add_argument('-m1',
                        '--Map1',
                        required=False,
                        help='First Train Map')
    parser.add_argument('-m2',
                        '--Map2',
                        required=False,
                        help='Second Train Map')

    parser.add_argument(
        '-vl',
        '--Validation',
        required=False,
        action='store_true',
        help='validate trained model (True/False, default is false)')

    parser.add_argument(
        '-sb',
        '--SizeBeam',
        required=False,
        choices=range(1, 20),
        default=4,
        help='Validation mode: Size of Beam (Integer, default is 4)')

    parser.add_argument(
        '-lnf',
        '--LengthNormalizationFactor',
        required=False,
        default=0.5,
        help=
        'Validation mode: Length Normalization Factor [0.5-0.7] (0.5 is the default)'
    )

    args = parser.parse_args()

    if args.MaxEpoch is None:
        args.MaxEpoch = numpy.int32(20)

    else:
        args.MaxEpoch = numpy.int32(args.MaxEpoch)

    if args.DimModel is None:
        args.DimModel = numpy.int32(100)
    else:
        args.DimModel = numpy.int32(args.DimModel)
    if args.Seed is None:
        args.Seed = numpy.int32(90001)
    else:
        args.Seed = numpy.int32(args.Seed)
    if args.DropOut is None:
        args.DropOut = numpy.float32(0.9)
    else:
        args.DropOut = numpy.float32(args.DropOut)
    #
    if args.Map1 is None:
        args.Map1 = 'map_2'
    else:
        args.Map1 = str(args.Map1)
    if args.Map2 is None:
        args.Map2 = 'map_3'
    else:
        args.Map2 = str(args.Map2)

    assert isinstance(args.LengthNormalizationFactor, float)
    assert 0.5 <= args.LengthNormalizationFactor <= 0.7

    assert isinstance(args.SizeBeam, int), "Size of Beam is not an int"

    id_process = os.getpid()
    time_current = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
    #
    tag_model = '_PID=' + str(id_process) + '_TIME=' + time_current

    #
    path_track = './tracks/track' + tag_model + '/'

    file_log = os.path.join(path_track + 'log.txt')

    if not os.path.exists(path_track):
        os.makedirs(path_track)

    args.path_save = os.path.abspath(path_track)

    logger = create_logger(file_log, 'trainer log')
    logger.info(args)

    run_model.train_model(args)