np.mean(P_val),
            np.mean(R_val),
            np.mean(ap_val)
        ]
        learning_rate = lr.adapt(mAP_val)
        values = [
            i, l, l_rank, l_att_span, l_att_global, l_att_dist, mF1_val,
            mAP_val, learning_rate
        ]

        logger.add(values)
        print(
            '{} loss: {} l_rank: {} l_att_span: {} l_att_global: {} l_att_dist: {} mF1: {} mAP: {} lr: {}'
            .format(*values))
        print('Precision: {} Recall: {}'.format(mP_val, mR_val))
        logger.save()

        print('learning rate', learning_rate)
        if is_save and mAP_val >= logger.get_max('mAP'):
            saver.save(sess, save_path + '/model_ES.ckpt')


def evaluate_df():
    ap_tst, predictions_mll, labels_mll = evaluate(
        iterator_test, [img_ids_test, features_test, seen_labels_test],
        model.features, model.logits, sess, model)
    F1_3_tst, P_3_tst, R_3_tst = evaluate_k(
        3, iterator_test, [img_ids_test, features_test, seen_labels_test],
        model.features, model.logits, sess, model, predictions_mll, labels_mll)
    F1_5_tst, P_5_tst, R_5_tst = evaluate_k(
        5, iterator_test, [img_ids_test, features_test, seen_labels_test],