コード例 #1
0
ファイル: train.py プロジェクト: codingluke/ba-thesis-code
def train(job_id, border, n_hidden_layer, eta):
    print "Job ID: %d" % job_id
    metric_recorder = MetricRecorder(config_dir_path='.', job_id=job_id)
    C = {
        'X_dirpath' : '../../../data/train/*',
        'y_dirpath' : '../../../data/train_cleaned/',
        'mini_batch_size' : 500,
        'batchsize' : 500000,
        'limit' : 30,
        'epochs' : 100,
        'patience' : 20000,
        'patience_increase' : 2,
        'improvement_threshold' : 0.995,
        'validation_frequency' : 5000,
        'lmbda' : 0.0,
        'training_size' : None,
        'validation_size' : None,
        'algorithm' : 'RMSProp'
    }

    training_data = BatchProcessor(
        X_dirpath='../../../data/train/*',
        y_dirpath='../../../data/train_cleaned/',
        batchsize=C['batchsize'],
        border=border,
        limit=C['limit'],
        dtype=theano.config.floatX)

    validation_data = BatchProcessor(
        X_dirpath='../../../data/valid/*',
        y_dirpath='../../../data/train_cleaned/',
        batchsize=C['batchsize'],
        border=border,
        limit=C['limit'],
        dtype=theano.config.floatX)

    C['training_size'] = len(training_data)
    C['validation_size'] = len(validation_data)
    print "Training size: %d" % C['training_size']
    print "Validation size: %d" % C['validation_size']

    metric_recorder.add_experiment_metainfo(constants=C)
    metric_recorder.start()

    n_in = (2*border+1)**2
    net = Network([FullyConnectedLayer(n_in=n_in, n_out=n_hidden_layer),
                   FullyConnectedLayer(n_in=n_hidden_layer, n_out=1)],
                  C['mini_batch_size'])

    result = net.train(tdata=training_data, epochs=C['epochs'],
                     mbs=C['mini_batch_size'], eta=eta,
                     vdata=validation_data, lmbda=C['lmbda'],
                     momentum=None, patience_increase=C['patience_increase'],
                     improvement_threshold=C['improvement_threshold'],
                     validation_frequency=C['validation_frequency'],
                     metric_recorder=metric_recorder)

    print 'Time = %f' % metric_recorder.stop()
    print 'Result = %f' % result
    return float(result)
コード例 #2
0
pretrain_data = BatchProcessor(
    X_dirpath=C['X_pretrain_dirpath'],
    y_dirpath=C['y_dirpath'],
    batchsize=500000, border=C['border'], limit=None,
    random=True, random_mode='fully', rnd=rnd,
    dtype=theano.config.floatX)

C['training_size'] = training_data.size()
C['validation_size'] = validation_data.size()
C['pretrain_size'] = pretrain_data.size()
print "Training size: %d" % C['training_size']
print "Validation size: %d" % C['validation_size']
print "Pretrain size: %d" % C['pretrain_size']

mr.add_experiment_metainfo(constants=C)
mr.start()

save_dir = "./models/%s_%d_" % (mr.experiment_name, mr.job_id)
pretrain_save_dir = save_dir + "pretrain_"

n_in = (2*C['border']+1)**2
net = Network([
    AutoencoderLayer(n_in=n_in, n_hidden=C['hidden_1'], rnd=rnd,
      corruption_level=C['corruption_level']),
    AutoencoderLayer(n_in=C['hidden_1'], n_hidden=C['hidden_2'], rnd=rnd,
      corruption_level=C['corruption_level'], p_dropout=C['dropout']),
    AutoencoderLayer(n_in=C['hidden_2'], n_hidden=C['hidden_3'], rnd=rnd,
      corruption_level=C['corruption_level']),
    FullyConnectedLayer(n_in=C['hidden_3'], n_out=1, rnd=rnd)],
    C['mini_batch_size'])
コード例 #3
0
ファイル: train.py プロジェクト: codingluke/ba-thesis-code
def train(job_id, mbs):
    #print "Job ID: %d" % job_id
    eta = 0.01 # 1-7 0.01
    border = 2
    n_hidden_layer = 80
    metric_recorder = MetricRecorder(config_dir_path='.', job_id=job_id)
    C = {
        'X_dirpath' : '../../../data/train_all/*',
        'y_dirpath' : '../../../data/train_cleaned/',
        'batchsize' : 500000,
        'limit' : 20,
        'epochs' : 4,
        'patience' : 70000,
        'patience_increase' : 2,
        'improvement_threshold' : 0.995,
        'validation_frequency' : 20,
        'lmbda' : 0.0,
        'training_size' : None,
        'validation_size' : None,
        'algorithm' : 'RMSProp',
        'mini_batch_size': mbs
    }

    training_data = BatchProcessor(
        X_dirpath='../../../data/train_all/*',
        y_dirpath='../../../data/train_cleaned/',
        batchsize=C['batchsize'],
        border=border,
        limit=C['limit'],
        random=True,
        random_mode='fully',
        dtype=theano.config.floatX,
        rnd=rnd)

    validation_data = BatchProcessor(
        X_dirpath='../../../data/train/*',
        y_dirpath='../../../data/train_cleaned/',
        batchsize=C['batchsize'],
        random=False,
        border=border,
        limit=C['limit'],
        dtype=theano.config.floatX,
        rnd=rnd)

    C['training_size'] = training_data.size()
    C['validation_size'] = validation_data.size()
    print "Training size: %d" % C['training_size']
    print "Validation size: %d" % C['validation_size']

    metric_recorder.add_experiment_metainfo(constants=C)
    metric_recorder.start()

    n_in = (2*border+1)**2
    net = Network([FullyConnectedLayer(n_in=n_in, n_out=n_hidden_layer,
                    rnd=rnd),
                   FullyConnectedLayer(n_in=n_hidden_layer, n_out=1,
                    rnd=rnd)],
                  C['mini_batch_size'])

    result = net.train(tdata=training_data, epochs=C['epochs'],
                     mbs=C['mini_batch_size'], eta=eta,
                     vdata=validation_data, lmbda=C['lmbda'],
                     momentum=None, patience_increase=C['patience_increase'],
                     improvement_threshold=C['improvement_threshold'],
                     validation_frequency=C['validation_frequency'],
                     metric_recorder=metric_recorder,
                     save_dir='./model/%d_' % metric_recorder.job_id,
                     early_stoping=False)

    print 'Time = %f' % metric_recorder.stop()
    print 'Result = %f' % result
    return float(result)
コード例 #4
0
ファイル: train.py プロジェクト: codingluke/ba-thesis-code
def train(job_id, params):
    print "Job ID: %d" % job_id
    border = 2
    n_hidden_layer = params['hidden']
    metric_recorder = MetricRecorder(config_dir_path='./config.json',
                                     job_id=job_id)
    C = {
        'X_dirpath' : '../../../data/onetext_train_small/*',
        'X_valid_dirpath' : '../../../data/onetext_valid_small/*',
        'y_dirpath' : '../../../data/train_cleaned/',
        'batchsize' : 2000000,
        'limit' : None,
        'epochs' : 15,
        'patience' : 70000,
        'patience_increase' : 2,
        'improvement_threshold' : 0.995,
        'validation_frequency' : 2,
        'lmbda' : 0.0,
        'dropout' : 0.0,
        'training_size' : None,
        'validation_size' : None,
        'algorithm' : 'RMSProp',
        'eta' : float(params['eta'][0]),
        'eta_min': float(params['eta_min'][0]),
        'eta_pre' : float(params['eta_pre'][0]),
        'corruption_level' : float(params['corruption_level'][0]),
        'border' : 2,
        'hidden' : int(params['hidden'][0]),
        'mini_batch_size': 500
    }

    training_data = BatchProcessor(
        X_dirpath=C['X_dirpath'],
        y_dirpath=C['y_dirpath'],
        batchsize=C['batchsize'],
        border=C['border'],
        limit=C['limit'],
        random=True,
        random_mode='fully',
        dtype=theano.config.floatX,
        rnd=rnd)

    validation_data = BatchProcessor(
        X_dirpath=C['X_valid_dirpath'],
        y_dirpath=C['y_dirpath'],
        batchsize=C['batchsize'],
        border=C['border'],
        limit=C['limit'],
        random=False,
        dtype=theano.config.floatX,
        rnd=rnd)

    pretrain_data = BatchProcessor(
        X_dirpath='../../../data/onetext_pretrain_small/*',
        y_dirpath='../../../data/train_cleaned/',
        batchsize=50000, border=border, limit=None,
        random=True, random_mode='fully', rnd=rnd,
        dtype=theano.config.floatX)

    C['training_size'] = training_data.size()
    C['validation_size'] = validation_data.size()
    print "Training size: %d" % C['training_size']
    print "Validation size: %d" % C['validation_size']

    metric_recorder.add_experiment_metainfo(constants=C)
    metric_recorder.start()

    n_in = (2*border+1)**2
    net = Network([
        AutoencoderLayer(n_in=n_in, n_hidden=C['hidden'], rnd=rnd,
          corruption_level=C['corruption_level']),
        FullyConnectedLayer(n_in=C['hidden'], n_out=1, rnd=rnd)],
        C['mini_batch_size'])

    print '...start pretraining'
    net.pretrain_autoencoders(training_data=pretrain_data,
        mbs=C['mini_batch_size'], eta=C['eta_pre'], epochs=15, metric_recorder=metric_recorder)

    result = net.train(tdata=training_data, epochs=C['epochs'],
                     mbs=C['mini_batch_size'], eta=C['eta'],
                     eta_min=C['eta_min'],
                     vdata=validation_data, lmbda=C['lmbda'],
                     momentum=None,
                     patience_increase=C['patience_increase'],
                     improvement_threshold=C['improvement_threshold'],
                     validation_frequency=C['validation_frequency'],
                     metric_recorder=metric_recorder,
                     save_dir='./models/%d_' % metric_recorder.job_id,
                     early_stoping=False)

    print 'Time = %f' % metric_recorder.stop()
    print 'Result = %f' % result
    return float(result)
コード例 #5
0
ファイル: train.py プロジェクト: codingluke/ba-thesis-code
def train(job_id, params):
    print "Job ID: %d" % job_id
    eta = params["eta"]
    border = 2
    n_hidden_layer = params["hidden"]
    metric_recorder = MetricRecorder(config_dir_path="./config.json", job_id=job_id)
    C = {
        "X_dirpath": "../../../data/onetext_train_small/*",
        "X_valid_dirpath": "../../../data/onetext_valid_small/*",
        "y_dirpath": "../../../data/train_cleaned/",
        "batchsize": 500000,
        "limit": None,
        "epochs": 4,
        "patience": 70000,
        "patience_increase": 2,
        "improvement_threshold": 0.995,
        "validation_frequency": 20,
        "lmbda": float(params["l2"][0]),
        "dropout": float(params["dropout"][0]),
        "training_size": None,
        "validation_size": None,
        "algorithm": "RMSProp",
        "eta": float(params["eta"][0]),
        "eta_min": params["eta_min"][0],
        "border": 2,
        "hidden": int(params["hidden"][0]),
        "mini_batch_size": 500,
    }

    training_data = BatchProcessor(
        X_dirpath=C["X_dirpath"],
        y_dirpath=C["y_dirpath"],
        batchsize=C["batchsize"],
        border=C["border"],
        limit=C["limit"],
        random=True,
        random_mode="fully",
        dtype=theano.config.floatX,
        rnd=rnd,
    )

    validation_data = BatchProcessor(
        X_dirpath=C["X_valid_dirpath"],
        y_dirpath=C["y_dirpath"],
        batchsize=C["batchsize"],
        border=C["border"],
        limit=C["limit"],
        random=False,
        dtype=theano.config.floatX,
        rnd=rnd,
    )

    C["training_size"] = training_data.size()
    C["validation_size"] = validation_data.size()
    print "Training size: %d" % C["training_size"]
    print "Validation size: %d" % C["validation_size"]

    metric_recorder.add_experiment_metainfo(constants=C)
    metric_recorder.start()

    n_in = (2 * border + 1) ** 2
    net = Network(
        [
            FullyConnectedLayer(n_in=n_in, n_out=C["hidden"], rnd=rnd),
            FullyConnectedLayer(n_in=C["hidden"], n_out=1, rnd=rnd),
        ],
        C["mini_batch_size"],
    )

    result = net.train(
        tdata=training_data,
        epochs=C["epochs"],
        mbs=C["mini_batch_size"],
        eta=C["eta"],
        eta_min=C["eta_min"],
        vdata=validation_data,
        lmbda=C["lmbda"],
        momentum=None,
        patience_increase=C["patience_increase"],
        improvement_threshold=C["improvement_threshold"],
        validation_frequency=C["validation_frequency"],
        metric_recorder=metric_recorder,
        save_dir="./models/%d_" % metric_recorder.job_id,
        early_stoping=False,
    )

    print "Time = %f" % metric_recorder.stop()
    print "Result = %f" % result
    return float(result)