def transpose_qkv(self, X): X = X.reshape(X.shape[0], X.shape[1], self.num_heads, -1) X = X.transpose(0, 2, 1, 3) return X.reshape(-1, X.shape[2], X.shape[3])