文章目录

  • 1. input encoding
    • 1.1 原理
    • 1.2 实现
  • 2. local inference modeling
    • 2.1 原理
    • 2.2 实现
  • 3. inference composition
    • 3.1 原理
    • 3.2 实现

ESIM 原理笔记见: 论文笔记&翻译——Enhanced LSTM for Natural Language Inference(ESIM)

ESIM主要分为三部分:input encodinglocal inference modelinginference composition。如上图所示,ESIM 是左边一部分, 如下图所示

三部分简要代码如下:

1. input encoding

1.1 原理

aˉi=BiLSTM(a,i),∀i∈[1,2,...,la]\bar{a}_i = BiLSTM(a, i), \forall i \in [1, 2, ..., l_a]aˉi=BiLSTM(a,i),i[1,2,...,la]

bˉj=BiLSTM(b,j),∀j∈[1,2,...,lb]\bar{b}_j = BiLSTM(b, j), \forall j \in [1, 2, ..., l_b]bˉj=BiLSTM(b,j),j[1,2,...,lb]

1.2 实现

i1 = Input(shape=(SentenceLen,), dtype='float32')
i2 = Input(shape=(SentenceLen,), dtype='float32')x1 = Embedding([CONFIG])(i1)
x2 = Embedding([CONFIG])(i2)x1 = Bidirectional(LSTM(300, return_sequences=True))(x1)
x2 = Bidirectional(LSTM(300, return_sequences=True))(x2)

2. local inference modeling

2.1 原理

ai^=∑j=1lbexp⁡eij∑k=1lbexp⁡(eik)bˉ,∀i∈[1,2,...,la]\hat{a_i} = \sum_{j=1}^{l_b} \frac{\exp{e_{ij}}}{\sum_{k=1}^{l_b} \exp(e_{ik})} \bar{b}, \forall i \in [1, 2, ..., l_a]ai^=j=1lbk=1lbexp(eik)expeijbˉ,i[1,2,...,la]

bj^=∑i=1laexp⁡eij∑k=1laexp⁡(ekj)aˉ,∀j∈[1,2,...,lb]\hat{b_j} = \sum_{i=1}^{l_a} \frac{\exp{e_{ij}}}{\sum_{k=1}^{l_a} \exp(e_{kj})} \bar{a}, \forall j \in [1, 2, ..., l_b]bj^=i=1lak=1laexp(ekj)expeijaˉ,j[1,2,...,lb]

2.2 实现

e = Dot(axes=2)([x1, x2])
e1 = Softmax(axis=2)(e)
e2 = Softmax(axis=1)(e)
e1 = Lambda(K.expand_dims, arguments={'axis' : 3})(e1)
e2 = Lambda(K.expand_dims, arguments={'axis' : 3})(e2)_x1 = Lambda(K.expand_dims, arguments={'axis' : 1})(x2)
_x1 = Multiply()([e1, _x1])
_x1 = Lambda(K.sum, arguments={'axis' : 2})(_x1)
_x2 = Lambda(K.expand_dims, arguments={'axis' : 2})(x1)
_x2 = Multiply()([e2, _x2])
_x2 = Lambda(K.sum, arguments={'axis' : 1})(_x2)

3. inference composition

3.1 原理

ma=[aˉ;a^;aˉ−a^;aˉ⊙a^]m_a = [\bar{a}; \hat{a}; \bar{a} - \hat{a}; \bar{a} \odot \hat{a}]ma=[aˉ;a^;aˉa^;aˉa^]

mb=[bˉ;b^;bˉ−b^;bˉ⊙b^]m_b = [\bar{b}; \hat{b}; \bar{b} - \hat{b}; \bar{b} \odot \hat{b}]mb=[bˉ;b^;bˉb^;bˉb^]

va,i=BiLSTM(ma,i)v_{a,i} = BiLSTM(m_a, i)va,i=BiLSTM(ma,i)

vb,j=BiLSTM(mb,j)v_{b,j} = BiLSTM(m_b, j)vb,j=BiLSTM(mb,j)

va,ave=∑i=1lava,ilav_{a,ave} = \sum_{i=1}^{l_a} \frac{v_{a,i}}{l_a}va,ave=i=1lalava,i

va,max=max⁡i=1lava,iv_{a,max} = \max_{i=1}^{l_a} v_{a,i}va,max=i=1maxlava,i

vb,ave=∑j=1lbvb,jlbv_{b,ave} = \sum_{j=1}^{l_b} \frac{v_{b,j}}{l_b}vb,ave=j=1lblbvb,j

vb,max=max⁡j=1lbvb,jv_{b,max} = \max_{j=1}^{l_b} v_{b,j}vb,max=j=1maxlbvb,j

v=[va,ave;va,max;vb,ave;vb,max]v = [v_{a,ave}; v_{a,max}; v_{b,ave}; v_{b,max} ]v=[va,ave;va,max;vb,ave;vb,max]

3.2 实现

m1 = Concatenate()([x1, _x1, Subtract()([x1, _x1]), Multiply()([x1, _x1])])
m2 = Concatenate()([x2, _x2, Subtract()([x2, _x2]), Multiply()([x2, _x2])])y1 = Bidirectional(LSTM(300, return_sequences=True))(m1)
y2 = Bidirectional(LSTM(300, return_sequences=True))(m2)mx1 = Lambda(K.max, arguments={'axis' : 1})(y1)
av1 = Lambda(K.mean, arguments={'axis' : 1})(y1)
mx2 = Lambda(K.max, arguments={'axis' : 1})(y2)
av2 = Lambda(K.mean, arguments={'axis' : 1})(y2)y = Concatenate()([av1, mx1, av2, mx2])
y = Dense(1024, activation='tanh')(y)
y = Dropout(0.5)(y)
y = Dense(1024, activation='tanh')(y)
y = Dropout(0.5)(y)
y = Dense(2, activation='softmax')(y)

Python实战——ESIM 模型搭建(keras版)相关推荐

  1. ESIM模型的“全能版”!网易易盾实验室研究员解读HIM混合推理模型

    "知物由学"是网易易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物由 ...

  2. Python实战 | 滑块拼图验证码高级版详解

    目录 1.如何实现滑块拼图验证码高级版? 2.HTML代码: 3.Python代码: 4.执行后报错,解决方案: 5.完整代码,修改后如下: 1.如何实现滑块拼图验证码高级版? 2.HTML代码: & ...

  3. Python实战 -- 利用Flask搭建微电影网站(一)蓝图构建

    https://www.bilibili.com/video/av51720348?p=5

  4. 独家 | 在浏览器中使用TensorFlow.js和Python构建机器学习模型(附代码)

    作者:MOHD SANAD ZAKI RIZVI 翻译:吴金笛 校对:丁楠雅 本文约5500字,建议阅读15分钟. 本文首先介绍了TensorFlow.js的重要性及其组件,并介绍使用其在浏览器中构建 ...

  5. linux tensorflow demo_独家 | 在浏览器中使用TensorFlow.js和Python构建机器学习模型(附代码)...

    作者:MOHD SANAD ZAKI RIZVI 翻译:吴金笛 校对:丁楠雅 本文约5500字,建议阅读15分钟. 本文首先介绍了TensorFlow.js的重要性及其组件,并介绍使用其在浏览器中构建 ...

  6. [Python人工智能] 二十四.易学智能GPU搭建Keras环境实现LSTM恶意URL请求分类

    最近用笔记本跑Keras和TensorFlow深度学习代码,一个模型跑十几个小时还奔溃,真的头大!这篇文章简单讲解易学智能GPU搭建Keras环境的过程,并实现了LSTM文本分类的实验,本来想写Goo ...

  7. kaggle实战—泰坦尼克(五、模型搭建-模型评估)

    kaggle实战-泰坦尼克(一.数据分析) kaggle实战-泰坦尼克(二.数据清洗及特征处理) kaggle实战-泰坦尼克(三.数据重构) kaggle实战-泰坦尼克(四.数据可视化) kaggle ...

  8. python django mysql web页面多级联动_Python Web实战:Python+Django+MySQL实现基于Web版的增删改查...

    前言 本篇使用Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查功能,旨在快速入门Python Web,少走弯路.效果演示在项目实战最 ...

  9. Python机器学习全流程项目实战精讲(2018版)

    Python机器学习全流程项目实战精讲(2018版) 网盘地址:https://pan.baidu.com/s/16SSVq74YC07M0dW1iDekPg 提取码: vu7r 备用地址(腾讯微云) ...

最新文章

  1. Python中的lambda是什么?
  2. 软件验收标准和验收方法_自动门的验收标准
  3. keras 以图搜图
  4. Linux之Sed详解
  5. Method Overloading
  6. sql数据库简单增删改查
  7. linux 释放进程res_linux内存查看及释放
  8. 前端学习(2649):vue3.0的处理展示
  9. 用户权限管理shiro
  10. Ubuntu18.04之boost警告报错
  11. Flutter 学习汇总
  12. 路飞学城—Python—爬虫实战密训班 第三章
  13. 安装gid12.0.4linux-x64l后启动报错/liblzma.so.5: no version information available 的解决办法
  14. c++编程规范和范例
  15. 关于IOS7 AutoLayout的各种bug
  16. cadence SPB17.4 capture and cis 全部错误消息列表
  17. 孙其功陪你学之——OJB文件介绍
  18. 十大改名换姓的经典名著
  19. undeclared (first use in this function)
  20. vb.net 如何实现报表打印_如何实现流水条码的特殊排版打印

热门文章

  1. Ubuntu安装新的无线网卡驱动rtl88x2bu出现问题
  2. Linux内核之IO4:块I/O流程与I/O调度器
  3. 共赢云时代——用友能源耕云计划全国行河南站圆满结束
  4. 如何利用好it技术创业_利用和了解IT安全性
  5. 乐信季报图解:交易额达562亿 利润4.1亿环比增长59%
  6. 【天光学术】本科历史人物方面的论文怎么写?先从标题入手!
  7. 熊市赚取被动收入:质押NFT带来高达30%收益回报!
  8. Resin 配置与使用
  9. 看江湖老炮用尽洪荒之力解读网络协议(下)
  10. electron 弹窗