# passing embedding through dense networks qs = self.W_Q(embedding) # [batch_size x sequence_len x (query_key_dim * n_heads)] ks = self.W_K(embedding) # [batch_size x sequence_len x (query_key_dim * n_heads)] vs = self.W_V(embedding) # [batch_size x sequence_len x (value_dim * n_heads)]