def fully_connected(input, params):
    """Creates a fully connected layer with bias (without activation).

    Args:
        input (:obj:`tf.Tensor`):
            The input values.

        params (:obj:`tuple` of (:obj:`tf.Variable`, :obj:`tf.Variable`)):
            A tuple of (`weights`, `bias`). Probably obtained by :meth:`fully_connected_params`.

    Returns:
        :obj:`tf.Tensor`:
            The output values.
    """
    weights, bias = params
    return input @ weights + bias