with tf.Session() as sess:

            assert (captioner_ckpt is not None)
            captioner_saver.restore(sess, captioner_ckpt)
            used_ids = set()
            json_dump = []

            for i in itertools.count():
                time_start = time.time()
                try:
                    _ids, _target_seq, _image_id = sess.run(
                        [ids, target_seq, image_id])
                except:
                    break
                the_captions = recursive_ids_to_string(_ids[:, 0, :].tolist(),
                                                       vocab)
                the_labels = recursive_ids_to_string(
                    _target_seq[:, :].tolist(), vocab)
                the_image_ids = _image_id.tolist()
                for j, x, y in zip(the_image_ids, the_captions, the_labels):
                    if not j in used_ids:
                        used_ids.add(j)
                        json_dump.append({"image_id": j, "caption": x})
                print(
                    PRINT_STRING.format(
                        i, the_captions[0], the_labels[0],
                        BATCH_SIZE / (time.time() - time_start)))

            print("Finishing evaluating.")
            coco_get_metrics(json_dump, "ckpts/show_and_tell/",
                             get_train_annotations_file())
                #model_insert = recursive_ids_to_string(_ids.tolist(), vocab)
                #label_insert = recursive_ids_to_string(_next_id.tolist(), vocab)
                current_caption = _caption.tolist()
                model_insert = _ids.tolist()
                label_insert = _next_id.tolist()
                model_pointer = _model_pointer.tolist()
                label_pointer = _label_pointer.tolist()
                the_image_ids = _image_id.tolist()
                for cap, mins, lins, mptr, lptr, iid in zip(
                        current_caption, model_insert, label_insert,
                        model_pointer, label_pointer, the_image_ids):
                    model_cap = cap.copy()
                    model_cap.insert(mptr, mins)
                    label_cap = cap.copy()
                    label_cap.insert(lptr, lins)
                    cap = recursive_ids_to_string(cap, vocab)
                    model_cap = recursive_ids_to_string(model_cap, vocab)
                    label_cap = recursive_ids_to_string(label_cap, vocab)
                    if not iid in used_ids:
                        used_ids.add(iid)
                        json_dump.append({
                            "image_id": iid,
                            "caption": model_cap
                        })
                    print(
                        PRINT_STRING.format(
                            BATCH_SIZE / (time.time() - time_start), i, cap,
                            model_cap, label_cap))

            print("Finishing evaluating.")
            coco_get_metrics(json_dump, "ckpts/show_and_tell/",