frame_step,
                                   num_mel_bins=40,
                                   lower_frequency=20,
                                   upper_frequency=4000,
                                   num_coefficients=10,
                                   mfcc=True)
strides = [2, 1]

train_ds = signal_generator.make_dataset(train_data, True)
test_ds = signal_generator.make_dataset(test_data, False)
val_ds = signal_generator.make_dataset(val_data, False)

#Train the MultiLayer Perceptron
mlp = MLP()
mlp.train(train_ds, val_ds, 20)
filename = 'Model_mlp'

mlp._model().save(filename)

#Train the Convolutional NN
cnn = ConvNet(strides)
cnn.train(train_ds, val_ds, 20)
filename = 'Model_cnn'
cnn._model().save(filename)

#Train the DS Convolutional NN
dscnn = DS_CNN(strides)
dscnn.train(train_ds, val_ds, 20)
filename = 'Model_dscnn'
dscnn._model().save(filename)