def hybrid_forward(self, F, center, context, center_words):
<EOL>negatives = []<EOL>mask = []<EOL>for _ in range(self._kwargs['<STR_LIT>']):<EOL><INDENT>negatives.append(self.negatives_sampler(center_words))<EOL>mask_ = negatives[-<NUM_LIT:1>] != center_words<EOL>mask_ = F.stack(mask_, (negatives[-<NUM_LIT:1>] != context))<EOL>mask.append(mask_.min(axis=<NUM_LIT:0>))<EOL><DEDENT>negatives = F.stack(*negatives, axis=<NUM_LIT:1>)<EOL>mask = F.stack(*mask, axis=<NUM_LIT:1>).astype(np.float32)<EOL>emb_center = self.embedding(center).expand_dims(<NUM_LIT:1>)<EOL>emb_context = self.embedding_out(context).expand_dims(<NUM_LIT:2>)<EOL>pred_pos = F.batch_dot(emb_center, emb_context).squeeze()<EOL>loss_pos = (F.relu(pred_pos) - pred_pos + F.Activation(<EOL>-F.abs(pred_pos), act_type='<STR_LIT>')) / (mask.sum(axis=<NUM_LIT:1>) + <NUM_LIT:1>)<EOL>emb_negatives = self.embedding_out(negatives).reshape(<EOL>(-<NUM_LIT:1>, self._kwargs['<STR_LIT>'],<EOL>self._kwargs['<STR_LIT>'])).swapaxes(<NUM_LIT:1>, <NUM_LIT:2>)<EOL>pred_neg = F.batch_dot(emb_center, emb_negatives).squeeze()<EOL>mask = mask.reshape((-<NUM_LIT:1>, self._kwargs['<STR_LIT>']))<EOL>loss_neg = (F.relu(pred_neg) + F.Activation(<EOL>-F.abs(pred_neg), act_type='<STR_LIT>')) * mask<EOL>loss_neg = loss_neg.sum(axis=<NUM_LIT:1>) / (mask.sum(axis=<NUM_LIT:1>) + <NUM_LIT:1>)<EOL>return loss_pos + loss_neg<EOL>
SkipGram forward pass.

        Parameters
        ----------
        center : mxnet.nd.NDArray or mxnet.sym.Symbol
            Sparse CSR array of word / subword indices of shape (batch_size,
            len(token_to_idx) + num_subwords). Embedding for center words are
            computed via F.sparse.dot between the CSR center array and the
            weight matrix.
        context : mxnet.nd.NDArray or mxnet.sym.Symbol
            Dense array of context words of shape (batch_size, ). Also used for
            row-wise independently masking negatives equal to one of context.
        center_words : mxnet.nd.NDArray or mxnet.sym.Symbol
            Dense array of center words of shape (batch_size, ). Only used for
            row-wise independently masking negatives equal to one of
            center_words.