File size: 1,317 Bytes
5201951 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | from src.config import *
from src.dataset import NoteEncoder, seq2seq_dataset
from src.model import get_model
from src.trainer import train_model
from src.utils import get_dataset_path
import keras
import os
### DOWNLOAD DATASET ###
ROOT_DIR = os.getcwd()
TRAIN_PATH, VAL_PATH, ARTIFACTS_PATH, MODEL_PATH = get_dataset_path(ROOT_DIR, URL)
### REPRODUCABILITY ###
keras.utils.set_random_seed(SEED)
### INITIALIZE MODEL & DATASET ###
note2id, id2note, vocab = NoteEncoder(samples_path=TRAIN_PATH, vocab_path=ARTIFACTS_PATH)
vocab_size = len(vocab)
train = seq2seq_dataset(TRAIN_PATH + "/*.csv",note2id, seq_len=SEQ_LEN, window_shift=WINDOW_SHIFT,
batch_size=BATCH_SIZE, shuffle_buffer=2500, seed=SEED)
val = seq2seq_dataset(VAL_PATH + "/*.csv" ,note2id, seq_len=SEQ_LEN, window_shift=WINDOW_SHIFT,
batch_size=BATCH_SIZE, shuffle_buffer=None)
bach_model = get_model(lr= LEARNING_RATE, weight_decay= WEIGHT_DECAY,
emb_in = vocab_size, emb_out = EMBEDDING_DIM,
lstm_layers = LSTM_LAYERS, lstm_units = LSTM_UNITS,
lstm_dropout = LSTM_DROPOUT, dense_units = DENSE_UNITS,
dropout = DROPOUT)
### TRAINER ###
train_model(bach_model, train, val, N_EPOCHS, ARTIFACTS_PATH, MODEL_PATH) |