关于 Image Caption 中测试时用到的 beam search算法

关于beam search

之前组会中没讲清楚的 beam search,这里给一个案例来说明这种搜索算法。

在 Image Caption的测试阶段,为了得到输出的语句,一般会选用两种搜索方式,一种是贪心采样的方法(sample),即:每个时刻都选择输出概率最大的那个单词,作为当前时刻的输出。

另一种常用的搜索方法就是:beam search。此处,借用知乎的一个案例:

假设词表大小为3,内容为a,b,c。beam search size是2,那么在decoder解码的时候:

1: 生成第1个词的时候,选择概率最大的2个词,假设为a,c,那么当前序列就是a,c

2:生成第2个词的时候,我们将当前序列a和c,分别与词表中的所有词进行组合,得到新的6个序列aa ab ac ca cb cc,然后从其中选择2个得分最高的,作为当前序列,假如为aa cb

3:后面会不断重复这个过程,直到遇到结束符为止。最终输出2个得分最高的序列。

这样,就可以根据一张图得到对应的2句描述,由于每一次都会有对应句子的总的概率输出乘积,也就可以选择一个最好的语句描述。下面是YouTube上关于该概念讲解的截图:

参考文献:

  1. https://www.zhihu.com/question/54356960
  2. https://www.youtube.com/watch?v=UXW6Cs82UKo
  3. https://en.wikipedia.org/wiki/Beam_search
时间: 2024-10-02 08:01:43

关于 Image Caption 中测试时用到的 beam search算法的相关文章

tomcat配置虚拟路径,可以解决实际开发中测试时前端访问后台电脑上的图片的问题

首先电脑上要已经安装好tomcat,安装tomcat的教程可以从网上找到很多.这里就不赘述了. 一般开始做一个web项目后,会涉及到用户头像,商品图片等信息,这些图片保存在项目中不方便,于是我将选择保存在某个磁盘的一个文件夹中,例如 D:/img 这样的话,使用全路径会相应的有些不方便,于是我就选择在tomcat中配置虚拟路径,打开tomcat目录 找到他的配置文件夹conf,然后打开,看见如下所示 然后用某个文本编辑器(记事本格式乱,不建议使用)打开 server.xml 文件,在最后找到 <

使用真机测试时,在eclipse中data文件夹打不开

我们知道,在真机测试的时候,在某个应用程序中产生的db文件存在于data/data/应用的包名/中,这是我们很可能需要去该文件夹去查看一下,但是这个文件夹很可能打不开.以下给出解决办法: 1)使用RE文件管理器把data文件夹的权限更改为可读写,问题就解决了 2)使用模拟器 使用真机测试时,在eclipse中data文件夹打不开

Xcode5.1 64位添加第三方库真机测试时出现 Apple Mach -O Linker Error

今天添加微信分享的时候添加微信的静态文件和我以前添加的Core-Plot第三方库发生了冲突, 出现一大堆的 "Apple  Mach  -O Linker Error" , 错误分析: 这次出现错误的原因是 Architectures不统一造成的,微信的APi要求用32位编译,而第三方库是包含了64位. 解决方法: 解决的原理很简单 ,就是把Architectures 统一,把项目的Architectures和所引用的第三反库的(如果还有pod进来的pod内的targets的内容也要修

shell中测试语句的应用

在linux中测试语句的引入能够帮助我们在日常工作中提高工具效率,减少工作强度具有很重要的意义.因此本文主要介绍linux中shell脚本中关于测试语句的介绍和使用方法. 一.测试语句的范围 整数.字符串.文件 二.变量测试语句语法格式 test 测试条件 [ 测试条件 ] 三.测试关系 3.1变量测试关系     ==    -eq    //等于     !=    -ne    //不等于     >=    -ge    //大于等于     >     -gt    //大于    

LNMP环境下压力测试时的主要调试参数

LNMP环境下压力测试时的主要调试参数: 进行HTTP的压力测试时,很多时候会遇到很小的并发数,服务器就会出现不响应,或者连接超时,一般导致的原因有如下几点: 一.Nginx主要调试参数 主模块参数: worker_processes = 4 #按照CPU核心数量的设置 worker_rlimit_nofile 65535; #Nginx进程打开文件描述符最大数量 use epoll; #使用epoll事件模型 worker_connections = 10240 #每个进程的最大连接数 HTT

敏捷团队中测试人员的角色

Karen Greaves和Sam Laing将会在Agile Testing Days 2015上发表主旨演讲,演讲题目为"测试人员正在消亡",Agile Testing Days 2015将于11月9日至12日德国Potsdam举行.小编将会覆盖本次会议报道. 小编对二人进行了采访,关于敏捷是如何影响测试人员角色的,为了缩短测试交付周期,测试人员可以采取哪些措施,敏捷团队中测试人员与其他团队成员之间的协作,敏捷团队中测试人员可以贡献的价值. 小编:我的经验是,敏捷更广泛的普及率正在

php中序列化与反序列化在utf8和gbk编码中测试

在php中如果我们统一编码是没有什么问题了,但是很多朋友会发现一个问题就是utf8和gbk编码中返回的值会有所区别: php 在utf8和gbk编码下使用serialize和unserialize互相序列化和反序列化会出现无法成功反序列化的问题. 问题出现的原因主要是在不同编码下strlen函数计算中文字符串长度不同的原因. <?php $array=array('title'=>'php教程分享网','url'=>'http://www.111cn.net'); echo serial

154在屏幕中绘图时设置透明度(扩展知识:为图片视图添加点击手势识别器,来实现点击事件操作)

一张图片,通过混合模式绘制后,能得到不同效果的图片. 这里的示例仅是测试效果:实际上可以通过不同程度的混合模式绘制,来得到符合需求的效果. 效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 3 @interface ViewController : UIViewController 4 @property (strong, nonatomic) UIImageView *imgVBlend; 5 @property (strong, nona

sipp进行压力测试时遇到socket error 99 can&#39;t assign request错误

sipp是sip服务器压力测试工具,sipp运行于类linux系统或windows+cygwin环境,采用多进程发送请求机制. sip(会话初始化协议)是应用层协议,承载于udp和tcp之上,广泛应用于语音.视频通话的信令层.在遇到问题的测试场景中,我采用的是tcp连接,sipp为了构造压力测试场景,要模拟多个终端向服务器进行请求,每个终端都要与服务器建立一个tcp连接,sipp是通过调用socket connect方法不断向服务端发送请求,每次connect请求的时候会为连接随机分配一个端口,