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/",