理解attention的image to caption(图片的文字描述)

2023-10-27

更多查看:https://github.com/B-C-WANG/AI-Storage

4.1. 理解attention的image to caption(图片的文字描述)

4.1.1. 一、一个简单模型

  1. Encoder:使用预训练的CNN进行fine tuning,结束后截取出输入Image到一个
    feature map flatten成的向量或者直接得到的特征向量的输出,
    例如Height*Width*3的图片到2048*14*14的向量
  2. Decoder:decoder在第一次时会输入Encoder给出的图片特征以及
    和<start>词向量一起concat过后的向量,输入到LSTM预测下一个词,
    第一次过后每次LSTM就输入上一次得到的词的embedding,
    输出下一个预测的词的向量,通过LSTM的输出然后softmax,
    得到输出词的概率,转变成词语,直到到达end标记。
    在此过程中,LSTM自己的隐藏层每次输出下一个h向量,然后下一步将上一步输出的h向量作为输入(RNN的特性)

4.1.2. 二、增加Attention

Decoder发生变化:

  1. 原来LSTM每次输入上一个词的embedding,变为输入上一个词的embedding拼接上encoder给出的图片向量
  2. 但是每次拼接的encoder向量都是一样的,没有意义,于是使用Attention来修改这个向量,使其在一部分中有重点
    于是Attention出现
    Attention是给encoder结果加权重的,输入encoder结果以及LSTM的decoder输出的上一个结果,输出加了权重的encoder结果
    Encoder的输入(图片),以及Decoder的输出(词的onehot)都是明确的,而Attention如何优化,如何给出Image decode过后的权重,是需要关注的

4.1.3. 详细过程:

  1. 输入Image,经过预训练的CNN得到feature map,作为encoder out,这个过程可能需要先通过迁移分类任务fine tuning后面几层
  2. encoder out将作为LSTM的内部权重h的初始(由于feature map是2维的,通过mean转成向量传入LSTM)
  3. LSTM的输出的decoder向量,将会经过softmax到vocab的大的维度,给出每一个词的概率(dim就是词库中词的数目)
  4. LSTM的输入是词向量(来自于上一个LSTM预测的词的embedding,或者初始<start>的embedding)再拼接经过attention的feature map
  5. LSTM输出的decoder除了用于3中预测词,还用于给feature map加上attention,(用于LSTM的下一次显式输入)
  6. 给feature map加上的attention是和feature map同样长宽的,但是只有1个通道,里面的每个值都是softmax的结果
  7. 为了得到这个softmax,首先feature map的n通道通过Dense变为attention dim通道的特征,然后将这个特征与decoder向量经过Dense得到的attention dim长度向量的特征相加,最后Dense到1,然后softmax输出
  8. 最终输入Image,每次输出词的softmax,经过argmax得到词,直到得到<end>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解attention的image to caption(图片的文字描述) 的相关文章

  • 在非单一维度 1 处,张量 a (2) 的大小必须与张量 b (39) 的大小匹配

    这是我第一次从事文本分类工作 我正在使用 CamemBert 进行二进制文本分类 使用 fast bert 库 该库主要受到 fastai 的启发 当我运行下面的代码时 from fast bert data cls import Bert
  • word2vec中单词的向量代表什么?

    word2vec https code google com p word2vec 是 Google 的开源工具 它为每个单词提供一个浮点值向量 它们到底代表什么 还有一篇论文关于段落向量 http cs stanford edu quoc
  • 张量流 LSTM 模型中的 NaN 损失

    以下网络代码应该是经典的简单 LSTM 语言模型 一段时间后开始输出 nan 损失 在我的训练集上 这需要几个小时 而且我无法在较小的数据集上轻松复制它 但在认真的训练中 这种情况总是会发生 Sparse softmax with cros
  • SpaCy 的相似度是如何计算的?

    初学者 NLP 问题在这里 similarity 方法如何运作 哇 spaCy 太棒了 它的tfidf模型可以更容易预处理 但w2v只有一行代码 token vector 惊人的 In his spaCy 上的 10 行教程 https g
  • BERT - 池化输出与序列输出的第一个向量不同

    我在 Tensorflow 中使用 BERT 有一个细节我不太明白 根据文档 https tfhub dev google bert uncased L 12 H 768 A 12 1 https tfhub dev google bert
  • Keras:嵌入 LSTM

    在 LSTM 的 keras 示例中 用于对 IMDB 序列数据进行建模 https github com fchollet keras blob master examples imdb lstm py https github com
  • 这个 NLP 问题层次结构描述中的最大池化是什么类型

    我正在尝试实现这个描述以及我所做的 我生成了形状的 uni gram bi gram tri gram 15 512 使用填充 然后对于每个单词 我连接三个特征向量 3 512 然后我向他们申请 Globalmaxpooling1D 我不知
  • 使用我自己的训练示例训练 spaCy 现有的 POS 标记器

    我正在尝试在我自己的词典上训练现有的词性标注器 而不是从头开始 我不想创建一个 空模型 在spaCy的文档中 它说 加载您想要统计的模型 下一步是 使用add label方法将标签映射添加到标记器 但是 当我尝试加载英文小模型并添加标签图时
  • 用于估计(一元)困惑度的 NLTK 包

    我正在尝试计算我所拥有的数据的困惑度 我正在使用的代码是 import sys sys path append usr local anaconda lib python2 7 site packages nltk from nltk co
  • gensim如何计算doc2vec段落向量

    我正在看这篇论文http cs stanford edu quocle paragraph vector pdf http cs stanford edu quocle paragraph vector pdf 它指出 段落向量和词向量被平
  • 是否可以使用 Google BERT 来计算两个文本文档之间的相似度?

    是否可以使用 Google BERT 来计算两个文本文档之间的相似度 据我了解 BERT 的输入应该是有限大小的句子 一些作品使用 BERT 来计算句子的相似度 例如 https github com AndriyMulyar semant
  • 使用正则表达式标记化进行 NLP 词干提取和词形还原

    定义一个函数 名为performStemAndLemma 它需要一个参数 第一个参数 textcontent 是一个字符串 编辑器中给出了函数定义代码存根 执行以下指定任务 1 对给出的所有单词进行分词textcontent 该单词应包含字
  • AttributeError:类型对象“Word2Vec”没有属性“load_word2vec_format”

    我正在尝试实现 word2vec 模型并收到属性错误 AttributeError 类型对象 Word2Vec 没有属性 load word2vec format 下面是代码 wv Word2Vec load word2vec format
  • LSTM 批次与时间步

    我按照 TensorFlow RNN 教程创建了 LSTM 模型 然而 在这个过程中 我对 批次 和 时间步长 之间的差异 如果有的话 感到困惑 并且我希望得到帮助来澄清这个问题 教程代码 见下文 本质上是根据指定数量的步骤创建 批次 wi
  • Caffe 的 LSTM 模块

    有谁知道 Caffe 是否有一个不错的 LSTM 模块 我从 russel91 的 github 帐户中找到了一个 但显然包含示例和解释的网页消失了 以前是http apollo deepmatter io http apollo deep
  • 如何将标记化中的多单词名称保留在一起?

    我想使用 TF IDF 特征对文档进行分类 一种方法是 from sklearn feature extraction text import TfidfVectorizer import string import re import n
  • 使用 NLP 进行地址分割

    我目前正在开发一个项目 该项目应识别地址的每个部分 例如来自 str Jack London 121 Corvallis ARAD ap 1603 973130 输出应如下所示 street name Jack London no 121
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • 使用“自然”语言编写代码更好吗?

    我最近看到一种编程语言叫做超新星 http supernova sourceforge net 他们在网页上说 超新星编程语言是 现代脚本语言和 第一个提出了概念 用直接虚构进行编程 描述使用 纯人类语言的清晰子集 你可以编写如下代码 i
  • Java文本输出中的UTF-8编码问题

    我一直致力于测试高棉语 Unicode Wordbreaker 的各种解决方案 高棉语单词之间没有空格 这使得拼写检查和语法检查变得困难 以及从旧高棉语转换为高棉语 Unicode 我得到了一些源代码 现在在线 http www white

随机推荐

  • esp8266单片机透传_ESP8266系列 NODEMCU初体验

    上一次 我们讲到了ESP 01s 实际上就是一块WiFi透传模块 只能挂在单片机上 起到一个沟通和桥梁的作用 今天 我们来介绍ESP家族另一款非常常用的芯片 ESP8266 12系列 这个想邮票一样的芯片就是我们的12E 可以看出他与01s
  • c++基础二

    c 基础 无符号整数 unsigned unsigned char的范围从0开始 至少到255 unsigned int的范围从0开始 至少到65535 unsigned short的范围从0开始 至少到65535 unsigned lon
  • linux,Centos7,yum安装的curl无法正常使用

    root centos yum y install curl Loaded plugins fastestmirror langpacks Loading mirror speeds from cached hostfile Package
  • adb连接报错:This adb server's $ADB_VENDOR_KEYS is not set Try 'adb kill-server' if that seems wrong.

    Microsoft Windows 版本 6 1 7601 版权所有 2009 Microsoft Corporation 保留所有权利 C Users Administrator gt adb install C Users Admini
  • 【备忘】Unity IOS 覆盖安装后进游戏黑屏

    情景 unity LuaFrameWork UGUI V2 把资源打在包内用于过审 上架appStore后 覆盖安装下进游戏出现黑屏情况 上一版本是打小包过审 即大部分资源在进游戏后下载 推测 查看项目代码后 发现资源路径没有按版本号区分
  • 进行人工智能机器人研发,应该选择哪种编程语言?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 这个问题大多数新的机器人专家在他们的职业生涯中至少会思考一次 不幸的是 这也是一个没有直接答案的问题 如果你在 Stack Overflow Quora Trossen R
  • 运行springmvc时出现如下错误org.springframework.web.servlet.DispatcherServlet noHandlerFound

    出现错误 八月 12 2018 10 46 42 上午 org springframework web servlet DispatcherServlet noHandlerFound 警告 No mapping found for HTT
  • 飞书小程序开发

    1 tt showModal后跳转页面 跳转路径要为绝对路径 相对路径跳转无响应 2 手机息屏后将不再进入onload 生命周期 直接进入onshow 生命周期 onLoad 在页面初始化的时候触发 一个页面只调用一次 onShow 在切入
  • 杀死“比尔”

    所有人有一个初始的生命值 一个警官要杀一个人则该人的生命值减p 其他人则减Q 最少要杀多少次才可以把所有人杀掉 百度笔试手速太慢 没敲上去 可怜 include
  • 【观察】浪潮K1 Power:产业升级换挡提速,关键计算保驾护航

    今天 国家对数字经济给予了前所未有的高度重视 在 十四五 规划中 国家就明确提出了要将数字经济核心产业增加值占GDP的比重从7 8 提高到10 这也意味着未来整个计算产业将会迎来更大的需求 而算力也将成为数字经济时代的核心生产要素 在此过程
  • LeetCode 150. 逆波兰表达式求值

    题目链接 150 逆波兰表达式求值 遍历所有元素 如果当前元素是整数 则压入栈 如果是运算符 则将栈顶两个元素弹出做相应运算 再将结果入栈 最终表达式扫描完后 栈里的数就是结果 数组模拟栈 class Solution public int
  • Redis高级之IO多路复用和epoll(十二)

    nginx 的反向代理也是采用了IO多路复用 1 是什么 I O 网络 I O 多路 多个客户端连接 连接就是套接字描述符 即socket 或者 channel 指的是多条 TCP 连接 复用 用一个进程来处理多条的连接 使用单进程就能实现
  • 贪心算法三个经典例题

    贪心算法的三个经典例题 A Saruman s Army 题目描述 Saruman the White must lead his army along a straight path from Isengard to Helm s Dee
  • JVM:常用的四种垃圾回收机制

    1 CMS Concurrent Mark Sweep 并行 标记清除 老年代垃圾回收机制 cms是一个基于标记 清除 算法的综合多种算法的老年代垃圾回收器 适用场景 重视服务器响应速度 要求系统停顿时间最短 这里要说明下 这是一个老年代算
  • posefs1.perception.cs.cmu.edu 无法访问

    我尝试练习openpose时 发现运行的代码缺乏coffee的model 需要执行models 下的bat或sh 但是 posefs1 perception cs cmu edu 无法访问 从Kaggle上下载 https www kagg
  • Java学到什么程度才能叫精通?

    把下面这些内容掌握以后 你就可以自诩精通Java后端了 1 计算机基础 这部分内容是计算机相关专业同学的课程 但是非科班的小伙伴 譬如在下 就需要花时间恶补了 特别 是计算机网络 操作系统 数据结构这三门课程 至于编译原理 个人大概懂一点就
  • 段页式存储及分段分页优缺点分析,对比(王道考研_操作系统)

    分段分页优缺点分析 段页式管理 将进程按照逻辑模块分段 再将各段分页 再将内存空间分为大小相同的页框 最后将各个页装入各个内存块中 基本分段存储管理 与分页相比 离散分配时所分配的地址空间的基本单位不同 定义 进程的地址空间 按照程序的自身
  • STL中常用的排序算法

    merge 以下是排序和通用算法 提供元素排序策略 merge 合并两个有序序列 存放到另一个序列 例如 vecIntA vecIntB vecIntC是用vector
  • Git 版本回退与前进(03)

    现在 你已经学会了修改文件 然后把修改提交到Git版本库 现在 再练习一次 修改readme txt文件如下 Git is a distributed version control system Git is free software
  • 理解attention的image to caption(图片的文字描述)

    更多查看 https github com B C WANG AI Storage 4 1 理解attention的image to caption 图片的文字描述 4 1 1 一 一个简单模型 Encoder 使用预训练的CNN进行fin