def combined_model(input_image, coarse_model, fine_model,
                   training_coarse=False, training_fine=False):
    """Combines the coarse and fine models together.
    
    Args:
        input_image: A tensor of shape (batches, n_H, n_W, 3).
        coarse_model: A keras Model that implements the coarse model architecture.
        fine_model: A keras Model that implements the fine model architecture.
        training_coarse: A boolean. If True, sets training equal to True in the Coarse Model.
            This will have the effect of implementing dropout before the final dense layer.
        training_fine: A boolean. If True, sets training equal to True in the Fine Model. Currently,
            this will have no effect but could be used if something like dropout were added to the fine
            model in the future.
            
    Returns:
        y_pred: A tensor representing the predicted depth map. It has shape (batches, n_H_out, n_W_out, 1)
    """
    coarse_out = coarse_model(input_image, training = training_coarse)
    fine_in = {
        "orig": input_image,
        "coarse": coarse_out,
    }
    y_pred = fine_model(fine_in, training = training_fine)
    
    return y_pred