more details.
     * **value** (*Tensor*) -- map a query and a set of key-value
       pairs to an output. See "Attention Is All You Need" for
       more details.

     * **key_padding_mask** (*Optional**[**Tensor**]*) -- if
       provided, specified padding elements in the key will be
       ignored by the attention. When given a binary mask and a
       value is True, the corresponding value on the attention
       layer will be ignored. When given a byte mask and a value
       is non-zero, the corresponding value on the attention layer
       will be ignored

     * **need_weights** (*bool*) -- output attn_output_weights.

     * **attn_mask** (*Optional**[**Tensor**]*) -- 2D or 3D mask
       that prevents attention to certain positions. A 2D mask
       will be broadcasted for all the batches while a 3D mask
       allows to specify a different mask for the entries of each
       batch.

  Return type:
