def report_accuracy(X, y, coarse=True, prefix_string='benchmark'):
    if coarse:
        Y = np_utils.to_categorical(y, nb_classes_coarse)
    else:
        Y = np_utils.to_categorical(y, nb_classes_fine)
    
    # Test the model
    Y_predict = model.predict(X, batch_size=batch_size, verbose=1)
    
    # Convert floating point vector to a clean binary vector with only two 1's
    Y_predict_clean = clean_vec(Y_predict)
    
    acc = accuracy(Y_predict_clean, Y)
    print("%s accuracy: %f" % (prefix_string, acc))
    Y_test_fine = np_utils.to_categorical(y_test_fine, nb_classes_fine)
    Y_test_coarse = np_utils.to_categorical(y_test_coarse, nb_classes_coarse)
 
    if 'coarse' in model_name:
        Y_train = Y_train_coarse
        Y_test = Y_test_coarse
    elif 'fine' in model_name:
        Y_train = Y_train_fine
        Y_test = Y_test_fine
    
    # Test the model
    Y_predict_test = model.predict(X_test, batch_size=batch_size, verbose=1)
    Y_predict_train = model.predict(X_train, batch_size=batch_size, verbose=1)
    #print(Y_predict_train)
    # Convert floating point vector to a clean binary vector with only two 1's
    Y_predict_test_clean = clean_vec(Y_predict_test)
    Y_predict_train_clean = clean_vec(Y_predict_train)
    
    if 'coarse' in model_name:
        label_type = 'coarse'
    elif 'fine' in model_name:
        label_type = 'fine'

    test_accuracy = accuracy(Y_predict_test_clean, Y_test)
    print(label_type + " test accuracy: %f" % test_accuracy)
    
    train_accuracy = accuracy(Y_predict_train_clean, Y_train)
    print(label_type + " train accuracy: %f" % train_accuracy)
    
    # For generalization test, show the accuracy on the things it was not trained on
    if '_gen' in model_name: