def _luong_general_score(query, keys):
    '\n    Implements the Luong-style general scoring function.\n\n    - See [1]: Effective Approaches to Attention-based Neural Machine Translation,\n        http://arxiv.org/abs/1508.04025\n\n    Arguments:\n        query (tf.Tensor):\n            Decoder cell outputs to compare to the keys (memory).\n            The shape is expected to be shape=(B, num_units) with B being the batch size\n            and `num_units` being the output size of the decoder_cell.\n\n        keys (tf.Tensor):\n            Processed memory (usually the encoder states processed by the memory_layer).\n            The shape is expected to be shape=(B, X, num_units) with B being the batch size\n            and `num_units` being the output size of the memory_layer. X may be the\n            maximal length of the encoder time domain or in the case of local attention the\n            window size.\n\n    Returns:\n        score (tf.Tensor):\n            A tensor with shape=(B, X) containing the non-normalized score values.\n    '
    raise NotImplementedError('Luong style general mode attention scoring is not implemented yet!')
Implements the Luong-style general scoring function.

- See [1]: Effective Approaches to Attention-based Neural Machine Translation,
    http://arxiv.org/abs/1508.04025

Arguments:
    query (tf.Tensor):
        Decoder cell outputs to compare to the keys (memory).
        The shape is expected to be shape=(B, num_units) with B being the batch size
        and `num_units` being the output size of the decoder_cell.

    keys (tf.Tensor):
        Processed memory (usually the encoder states processed by the memory_layer).
        The shape is expected to be shape=(B, X, num_units) with B being the batch size
        and `num_units` being the output size of the memory_layer. X may be the
        maximal length of the encoder time domain or in the case of local attention the
        window size.

Returns:
    score (tf.Tensor):
        A tensor with shape=(B, X) containing the non-normalized score values.
def _luong_general_score(query, keys):
    '\n    Implements the Luong-style general scoring function.\n\n    - See [1]: Effective Approaches to Attention-based Neural Machine Translation,\n        http://arxiv.org/abs/1508.04025\n\n    Arguments:\n        query (tf.Tensor):\n            Decoder cell outputs to compare to the keys (memory).\n            The shape is expected to be shape=(B, num_units) with B being the batch size\n            and `num_units` being the output size of the decoder_cell.\n\n        keys (tf.Tensor):\n            Processed memory (usually the encoder states processed by the memory_layer).\n            The shape is expected to be shape=(B, X, num_units) with B being the batch size\n            and `num_units` being the output size of the memory_layer. X may be the\n            maximal length of the encoder time domain or in the case of local attention the\n            window size.\n\n    Returns:\n        score (tf.Tensor):\n            A tensor with shape=(B, X) containing the non-normalized score values.\n    '
    raise NotImplementedError('Luong style general mode attention scoring is not implemented yet!')