def METHOD_NAME(self, input, is_infer=False):
    self.labels = input[0]
    self.sparse_inputs = input[1:]
    #self.dense_input = input[-1]
    #sparse_number = self.sparse_inputs_slots - 1
    model = NAMLLayer(self.article_content_size, self.article_title_size,
                      self.browse_size, self.neg_condidate_sample_size,
                      self.word_dimension, self.category_size,
                      self.sub_category_size, self.cate_dimension,
                      self.word_dict_size)
    raw = model.forward(self.sparse_inputs)
    soft_predict = paddle.nn.functional.sigmoid(
        paddle.reshape(raw, [-1, 1]))
    predict_2d = paddle.concat(x=[1 - soft_predict, soft_predict], axis=-1)
    labels = paddle.reshape(self.labels, [-1, 1])
    #metrics_list[0].update(preds=predict_2d.numpy(), labels=labels.numpy())
    #self.predict = predict_2d
    auc, batch_auc, _ = paddle.static.auc(input=predict_2d,
                                          label=labels,
                                          num_thresholds=2**12,
                                          slide_steps=20)
    self.inference_target_var = auc
    if is_infer:
        fetch_dict = {'auc': auc}
        return fetch_dict
    cost = paddle.nn.functional.cross_entropy(
        input=raw,
        label=paddle.cast(self.labels, "float32"),
        soft_label=True)
    avg_cost = paddle.mean(x=cost)
    self._cost = avg_cost
    fetch_dict = {'cost': avg_cost, 'auc': auc}
    return fetch_dict