ds._convertToOneOfMany()
  return ds

trainingData = createDataset(X_train, Y_train)
validationData = createDataset(X_valid, Y_valid)
testData = createDataset(X_test, Y_test)

trainer = BackpropTrainer(net, trainingData) #, verbose=True)
#trainer.trainUntilConvergence(verbose=True, trainingData=trainingData, validationData=validationData)

maxEpochs = 100
continueEpochs = 10
convergence_threshold = 10
trainingErrors = []
validationErrors = []
trainer.ds = trainingData
bestweights = trainer.module.params.copy()
bestverr = trainer.testOnData(validationData)
bestepoch = 0
trainingErrors = []
validationErrors = [bestverr]

print('> Training')

epochs = 0
while True:
  trainingError = trainer.train()
  validationError = trainer.testOnData(validationData)
  
  print('Validation error = %f - Training error = %f' % (validationError, trainingError))