【自然语言处理】2. Attention实现详细解析( tfa, keras 方法调用源码分析 自建网络)
NLP系列讲解笔记
本专题是针对NLP的一些常用知识进行记录,主要由于本人接下来的实验需要用到NLP的一些知识点,但是本人非NLP方向学生,对此不是很熟悉,所以打算做个笔记记录一下自己的学习过程,也是为了博士的求学之路做铺垫!希望大家喜欢。如果有哪里写的不对,欢迎大家批评指正,感谢感谢!
传送门:
第一章 细讲:Attention模型的机制原理
目录
- NLP系列讲解笔记
- 前言
- 工具简介
- TensorFlow
- Keras
- tensorflow-addons
- 本实验所用库的版本信息
- Soft Attention
- tfa的实现
- LuongAttention
- Bahdanau Attention
- 官网使用示例
- Keras的实现
- Self Attention
- 自建网络
- 为什么self attention要scaled?
- 总结
- 彩蛋
- 参考
前言
最近几年,Attention模型在NLP乃至深度学习、人工智能领域都是一个相当热门的词汇,被学术界和工业界的广大学者放入自己的模型当中,并得到了不错的反馈。再加上BERT的强势表现以及Transformer的霸榜,让大家对Attention变得更加感兴趣,本人在上一篇文章对Attention模型的机制原理进行了详细的介绍分析,有兴趣的可以自行查看哟。
纸上得来终觉浅,绝知此事要躬行。机制原理、理论讲的再好,没有实验证明也白搭。实践是检验真理的唯一途径。上一篇文章出来,有人建议我出个代码讲解、具体实现方式。正好本人也要实验,所以我打算这一篇文章给大家详细讲解一下使用范围最广的Soft Attention以及Self Attention的代码实现,主要包括TensorFlow Addons、Keras封装函数以及自建网络三种形式,其他Attention模型的具体实现其实都差不太多,具体代码可以自行百度。
工具简介
本文主要采用的是TensorFlow、Keras以及tensorflow-addons等python库。
TensorFlow
TensorFlow 是一个端到端开源机器学习(主要是深度学习)平台。它拥有一个全面而灵活的生态系统,其中包含各种工具、库和社区资源,可助力研究人员推动先进机器学习技术的发展,并使开发者能够轻松地构建和部署由机器学习提供支持的应用。截止目前,最新版本为v2.6.0。
官网API:https://tensorflow.google.cn/api_docs/python/tf
Keras
Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。在TF2.x中可作为TensorFlow的高层API,并同步更新版本。
官网API:https://keras.io/zh/
tensorflow-addons
在TensorFlow2.x版本引入了 Special Interest Group (SIG),特殊兴趣小组,主要实现新发布论文中的算法。
TensorFlow2.x将tf.contrib移除,许多功能转移到了第三方库,而TensorFlow Addons 是一个符合完善的 API 模式但实现了核心 TensorFlow 中未提供的新功能的贡献仓库。TensorFlow 原生支持大量算子、层、指标、损失和优化器。但是,在像机器学习一样的快速发展领域中,有许多有趣的新开发成果无法集成到核心 TensorFlow 中(因为它们的广泛适用性尚不明确,或者主要由社区的较小子集使用)。
tensorflow-seq2seq在新版的tf中合并到tensorflow-addons中去了,除此之外tensorflow addons还有很多比较新的实现。
安装:pip install tensorflow-addons
官网API: https://tensorflow.google.cn/addons/api_docs/python/tfa
需要注意的是,tfa的版本需要和tf以及python的版本对应,不然运行会报错,具体版本对应信息看下图:
本实验所用库的版本信息
tensorflow-gpu==2.2.0
keras==2.4.3
tensorflow-addons==0.11.2
numpy==1.18.1
pandas==1.0.1
matplotlib==3.1.3
OK,工具介绍完毕,调参
【自然语言处理】2. Attention实现详细解析( tfa, keras 方法调用源码分析 自建网络)相关推荐
- Framework 源码解析知识梳理(5) startService 源码分析
一.前言 最近在看关于插件化的知识,遇到了如何实现Service插件化的问题,因此,先学习一下Service内部的实现原理,这里面会涉及到应用进程和ActivityManagerService的通信, ...
- java futuretask 源码解析_Java异步编程——深入源码分析FutureTask
Java的异步编程是一项非常常用的多线程技术. 之前通过源码详细分析了ThreadPoolExecutor<你真的懂ThreadPoolExecutor线程池技术吗?看了源码你会有全新的认识&g ...
- 源码解析2-GUI-绘制引擎(QPainter源码分析 )
Qt源码解析 索引 Qt图形用户界面 应用程序窗口 Qt GUI 模块中最重要的类是QGuiApplication和QWindow.想要在屏幕上显示内容的 Qt 应用程序需要使用这些.QGuiAppl ...
- opencv源码解析之(6):hog源码分析
一.网上一些参考资料 在博客目标检测学习_1(用opencv自带hog实现行人检测) 中已经使用了opencv自带的函数detectMultiScale()实现了对行人的检测,当然了,该算法采 ...
- java eventbus 原理_本文为 Android 开源项目实现原理解析 EventBus 部分,从源码分析 EventBus 的实现原理...
之前太忙导致 Android 开源项目实现原理解析 一度搁浅,目前一期进行中,我也完成了 EventBus 分析的初稿,大家可以稍微看看后面会继续润色下. PS:本文直接复制 Markdown,格式有 ...
- 最详细的Spring核心IOC的源码分析
https://blog.csdn.net/nuomizhende45/article/details/81158383 详细,清晰,收藏下便于后续查看
- python flask源码解析_Flask知识全套及源码分析
Flask是一个短小精悍可扩展强的框架,他独特之处在于 "上下文管理机制",如果你想要学习Flask使用并了解其中的精髓,那就赶快上车吧.... 内容包含三部分: 1. Flask ...
- android 事件分发 代码解析,Android事件分发之源码分析
原文首发于微信公众号:躬行之,欢迎关注交流! 上篇文章中叙述了 Android 事件分发的大致流程,下面从 Activity.ViewGroup.View 三个方面介绍事件的相关方法,小节如下: Ac ...
- threejs 源码解析_ThreeJS 物理材质shader源码分析(顶点着色器)
ThreeJS 物理材质shader源码分析(顶点着色器) Threejs将shader代码分为ShaderLib和ShaderChunk两部分,ShaderLib通过组合ShaderChunk的代码 ...
最新文章
- AI Studio : 利用Paddle框架中的极简框架识别MNIST
- 【小白学PyTorch】7.最新版本torchvision.transforms常用API翻译与讲解
- C# 中使用JSON - DataContractJsonSerializer
- python2.面向对象学生管理系统
- Jsoup解析body片段
- php下拉列表框 是隐藏变色的代码,jQuery设置下拉框显示与隐藏效果的方法分析...
- 【NOIP2002】【Luogu1037】产生数(高精乘低精,DFS暴力搜索)
- SRAM,SDRAM,网卡
- 计算机网络负载均衡图片,负载均衡计算机网络课程网.ppt
- 软考数据库系统工程师day01
- 怎样运行python_怎样运行python
- JavaScript 实现页面跳转的几种方式
- java将jfif格式转换成ipg_无需工具直接将jfif格式图片批量修改为jpg格式图片的方法...
- postgresql开启日志
- flash AS3.0实现进度条与播放暂停按钮的同步
- 新浪微博PC端登陆js分析及Python实现微博post登陆
- 情绪识别(python opencv dlib)
- php存在文件夹_PHP创建文件夹 PHP判断文件夹文件是否存在
- 一文搞懂什么是PWM!
- user account control用户帐户控制