def hybrid_forward(self, F, row, col, counts):
emb_in = self.source_embedding(row)<EOL>emb_out = self.context_embedding(col)<EOL>if self._dropout:<EOL><INDENT>emb_in = F.Dropout(emb_in, p=self._dropout)<EOL>emb_out = F.Dropout(emb_out, p=self._dropout)<EOL><DEDENT>bias_in = self.source_bias(row).squeeze()<EOL>bias_out = self.context_bias(col).squeeze()<EOL>dot = F.batch_dot(emb_in.expand_dims(<NUM_LIT:1>),<EOL>emb_out.expand_dims(<NUM_LIT:2>)).squeeze()<EOL>tmp = dot + bias_in + bias_out - F.log(counts).squeeze()<EOL>weight = F.clip(((counts / self._x_max)**self._alpha), a_min=<NUM_LIT:0>,<EOL>a_max=<NUM_LIT:1>).squeeze()<EOL>loss = weight * F.square(tmp)<EOL>return loss<EOL>
Compute embedding of words in batch.

        Parameters
        ----------
        row : mxnet.nd.NDArray or mxnet.sym.Symbol
            Array of token indices for source words. Shape (batch_size, ).
        row : mxnet.nd.NDArray or mxnet.sym.Symbol
            Array of token indices for context words. Shape (batch_size, ).
        counts : mxnet.nd.NDArray or mxnet.sym.Symbol
            Their co-occurrence counts. Shape (batch_size, ).

        Returns
        -------
        mxnet.nd.NDArray or mxnet.sym.Symbol
            Loss. Shape (batch_size, ).