batch_first=False or (N, S, E) if batch_first=True.
     * tgt: (T, E) for unbatched input, (T, N, E) if
       *batch_first=False* or *(N, T, E)* if *batch_first=True*.

     * src_mask: (S, S) or (N\cdot\text{num\_heads}, S, S).

     * tgt_mask: (T, T) or (N\cdot\text{num\_heads}, T, T).

     * memory_mask: (T, S).

     * src_key_padding_mask: (S) for unbatched input otherwise (N,
       S).

     * tgt_key_padding_mask: (T) for unbatched input otherwise (N,
       T).

     * memory_key_padding_mask: (S) for unbatched input otherwise
       (N, S).

     Note: [src/tgt/memory]_mask ensures that position i is
     allowed to attend the unmasked positions. If a ByteTensor is
     provided, the non-zero positions are not allowed to attend
     while the zero positions will be unchanged. If a BoolTensor
     is provided, positions with "True" are not allowed to attend
