or in data-driven manner at training time.

Blocking Scheme for Mixed Dimensions
------------------------------------

There is some amount of malleability and choice in the re-architecture of a uniform dimension embedding layer into a mixed dimension layer. With appropriate re-indexing, multiple embedding matrices may be *stacked* into a single block matrix, or a single embedding matrix may be row-wise *partitioned* into multiple block matrices. The point of the *partitioned* blocking scheme is to map the $n$ total embedding rows into blocks, with block-level row counts given by $(n_0,...,n_k)$ and offset vector $\mathbf{t} \in \mathbb{N}^{k+1}$ with $t_i := \sum_{j=0}^{i-1} n_j $.

#### Blocking for Collaborative Filtering

In CF tasks we only have two features – corresponding to users and items – with corresponding embedding matrices $W \in \mathbb{R}^{n \times d}$ and $V \in \mathbb{R}^{m \times d}$, respectively. To size the mixed dimension embedding layer *we apply mixed dimensions within individual embedding matrices by partitioning them*. First, we sort and re-index the rows based on row-wise frequency: $i < i' \implies f_i \geq f_{i'}$. Then, we partition each embedding matrix into $k+1$ blocks such that the total popularity (area under the curve) in each block is constant, as shown in Alg. \[alg:equipart\]. For a 