def get_style_layers(similarity="balanced"):
    """
    Assigns weights to style layer outputs to define whether the generated image
    is similar to "content", "style", or "balanced". The function is picking the
    last convolutional layer in each of the five blocks of the VGG network. The
    activations of each of these layers along with the content layer (last layer)
    will be the outputs of the neural style transfer network.
    Parameters
    ----------
    similarity: str, optional
        a string identifying the similarity to either content, style or both
    Returns
    -------
    style_layers
        a list of tuples identifying the name of style layer along with their weights
    """
    if similarity == "balanced":
        style_layers = [
            ("block1_conv1", 0.2),
            ("block2_conv1", 0.2),
            ("block3_conv1", 0.2),
            ("block4_conv1", 0.2),
            ("block5_conv1", 0.2),
        ]
    elif similarity == "content":
        style_layers = [
            ("block1_conv1", 0.02),
            ("block2_conv1", 0.08),
            ("block3_conv1", 0.2),
            ("block4_conv1", 0.3),
            ("block5_conv1", 0.4),
        ]
    elif similarity == "style":
        style_layers = [
            ("block1_conv1", 0.4),
            ("block2_conv1", 0.3),
            ("block3_conv1", 0.2),
            ("block4_conv1", 0.08),
            ("block5_conv1", 0.02),
        ]
    else:
        raise Exception(
            "Please provide either of 'content', 'style' or 'balanced' for --similarity"
        )

    return style_layers