Exemplo n.º 1
0
    start = time.time()
    dataset_manager = DatasetManager(dataset_name)
    data = dataset_manager.read_dataset()
    train, test = dataset_manager.split_data(data,
                                             train_ratio,
                                             split="temporal")
    train, val = dataset_manager.get_train_val_data(train, sample_size,
                                                    val_sample_size)
    print("Done: %s" % (time.time() - start))

    print('Encoding data...')
    start = time.time()
    dt_train = dataset_manager.encode_data(train)
    dt_val = dataset_manager.encode_data(val)
    dt_test = dataset_manager.encode_data(test)
    X, y = dataset_manager.generate_3d_data(dt_train, max_len)
    X_val, y_val = dataset_manager.generate_3d_data(dt_val, max_len)
    print("Done: %s" % (time.time() - start))

    print('Building and compiling the model...')
    start = time.time()
    data_dim = X.shape[2]
    model = Sequential()
    model.add(
        LSTM(lstmsize, input_shape=(max_len, data_dim), return_sequences=True))
    model.add(BatchNormalization())
    model.add(
        LSTM(lstmsize2, input_shape=(max_len, lstmsize),
             return_sequences=True))
    model.add(BatchNormalization())
    model.add(Dropout(dropout))
Exemplo n.º 2
0
    dataset_manager.calculate_divisors(dt_train)
elif normalize_over == "all":
    dt_all = dataset_manager.extract_timestamp_features(data)
    dt_all = dataset_manager.extract_duration_features(dt_all)
    dataset_manager.calculate_divisors(dt_all)
else:
    print("unknown normalization mode")

dt_train = dataset_manager.normalize_data(dt_train)

max_len = dataset_manager.get_max_case_length(dt_train)
activity_cols = [col for col in dt_train.columns if col.startswith("act")]
n_activities = len(activity_cols)
data_dim = n_activities + 5

X, y_a, y_t = dataset_manager.generate_3d_data(dt_train, max_len)

print("Done: %s"%(time.time() - start))


# compile a model with same parameters that was trained, and load the weights of the trained model
print('Training model...')
start = time.time()

main_input = Input(shape=(max_len, data_dim), name='main_input')
# train a 2-layer LSTM with one shared layer
l1 = LSTM(lstmsize, input_shape=(max_len, data_dim), consume_less='gpu', init='glorot_uniform', return_sequences=True, dropout_W=dropout)(main_input) # the shared layer
b1 = BatchNormalization(axis=1)(l1)
l2_1 = LSTM(lstmsize, consume_less='gpu', init='glorot_uniform', return_sequences=False, dropout_W=dropout)(b1) # the layer specialized in activity prediction
b2_1 = BatchNormalization()(l2_1)
l2_2 = LSTM(lstmsize, consume_less='gpu', init='glorot_uniform', return_sequences=False, dropout_W=dropout)(b1) # the layer specialized in time prediction