def multi_driver_training(options):
    """ Train model using all drivers' data in the given datapath."""
    print("Loading data...")
    dataset = load_all(options)

    print("Building model and compiling functions...")
    net = models.cnn_1(options, output_size=len(dataset['label_map']))
    # net = models.softmax_only(output_size=len(dataset['label_map']))

    print("Starting training...")
    start_time = time.time()
    try:
        train_loop(dataset['train_data'], dataset['val_data'], net, options)
        print('Training Complete...')
    except KeyboardInterrupt:
        print('Keyboard Interrupt...')
    end_time = time.time()

    print('--------------------')
    print('   Saving model, check logs for results.\n'
          '   Time taken: {0}\n'
          .format(end_time - start_time))

    utils.save_model(model=get_all_param_values(net), options=options)
    return net
def _train_single(driver_index, dataset, options):
    print('Building model and compiling functions...')
    net = models.cnn_1(options, output_size=2)
    # net = models.softmax_only(output_size=len(dataset['label_map']))
    train_labels = (dataset['train_data']['y'] == driver_index)
    val_labels = (dataset['val_data']['y'] == driver_index)
    assert(train_labels.dtype == bool)
    assert(val_labels.dtype == bool)
    driver_dataset = dict(train_data=dict(x=dataset['train_data']['x'], y=train_labels),
                          val_data=dict(x=dataset['val_data']['x'], y=val_labels))
    train_loop(driver_dataset['train_data'], driver_dataset['val_data'], net, options)
    return net