def METHOD_NAME(self, inputs, is_infer=False):
    self.hist_item_seq = inputs[0]
    self.hist_cat_seq = inputs[1]
    self.target_item = inputs[2]
    self.target_cat = inputs[3]
    self.label = inputs[4].reshape([-1, 1])
    self.mask = inputs[5]
    self.target_item_seq = inputs[6]
    self.target_cat_seq = inputs[7]
    din_model = DINLayer(self.item_emb_size, self.cat_emb_size, self.act,
                         self.is_sparse, self.use_DataLoader,
                         self.item_count, self.cat_count)
    raw_predict = din_model.forward(
        self.hist_item_seq, self.hist_cat_seq, self.target_item,
        self.target_cat, self.label, self.mask, self.target_item_seq,
        self.target_cat_seq)
    avg_loss = paddle.nn.functional.binary_cross_entropy_with_logits(
        raw_predict, self.label, reduction='mean')
    self._cost = avg_loss
    self.predict = paddle.nn.functional.sigmoid(raw_predict)
    predict_2d = paddle.concat([1 - self.predict, self.predict], 1)
    label_int = paddle.cast(self.label, 'int64')
    auc, batch_auc, _ = paddle.static.auc(input=predict_2d,
                                          label=label_int,
                                          slide_steps=0)
    self.inference_target_var = auc
    if is_infer:
        fetch_dict = {'auc': auc}
        return fetch_dict
    fetch_dict = {'cost': avg_loss, 'auc': auc}
    return fetch_dict