def METHOD_NAME(self, dy_model, metrics_list, batch_data, config):
    edges, node_feat, edge_feat, segment_ids, labels = self.create_feeds(
        batch_data, config)
    # predict
    output, l0_penaty, l2_penaty = dy_model.forward(
        edges, node_feat, edge_feat, segment_ids, True)
    # get loss
    l0_weight = config.get("hyper_parameters.l0_weight", 0.001)
    l2_weight = config.get("hyper_parameters.l0_weight", 0.001)
    loss = self.create_loss(output, labels, l0_penaty, l2_penaty,
                            l0_weight, l2_weight)
    # update metrics
    predictions = np.vstack(output)
    labels = np.vstack(labels)
    labels = labels[:, 1].reshape((-1, 1))
    metrics_list[0].update(preds=predictions, labels=labels)
    correct = metrics_list[1].compute(
        paddle.to_tensor(predictions), paddle.to_tensor(labels))
    metrics_list[1].update(correct)
    # print dict
    print_dict = {'loss': loss}
    return loss, metrics_list, print_dict