Name some of the default parameters as advanced parameters, so people won't worry about them
DBInterface goes to its own file
Move predict() to utils.py
Put run_targets() (potentially renamed to run_validation_targets?) in the main train.py, later part
Put run_targets_dict() in the train.py later part, rename to validation?
Start_queues() stop_queues() delete
Put test() in the test.py file
Also for test_from_params()
Keep the train_loop, maybe comment it better for minibatch
train(), update to remove the queues, maybe better comments
train_from_params(), remove the queues, update comments.
get_valid_targets_dict(), put in the train.py, better comments, remove queues
check_model_equivalence(), put in the utils.py
Rename cfg_final to additional_description, document it better, provide examples
Keep get_model() in train.py
get_loss() in train.py
in get_loss function at utils.py, maybe detecting the argument names and decide whether to use positional or named parameters (check inspect.getsargspec)
get_learning_rate() in train.py
get_optimizer_base(), try to fix optimizer problem so that it can support the official optimizers, maybe removing get_optimizer() (as it's not used)
get_params(), delete or put it in the example
parse_params(), put it in the utils.py or helper.py?