keras 中的keras.preprocessing、Embedding、GlobalMaxPooling1D()、 TimeDistributed
本文以短问答为背景,串联几个keras下常用的函数
0:keras.preprocessing
该模块是对数据的预处理模块
https://blog.csdn.net/winter_python/article/details/108615737
由于keras只能接受相等长度的序列,因此在将数据输入之前,要将所有的句子缩放成等长
input_length=10
keras.preprocessing.sequence.pad_sequences(sentence, maxlen=input_length, value=0.0)
分割后的句子长度为10,超过10的将被直接截断,小于10的将被value进行填充,直到所有的句子均被转化成等长的序列。
1:Embedding
嵌入层也作为模型搭建的第一层,将所有的字典词训练出一个词的嵌入矩阵,该矩阵的行维度会很高==字典词的个数,然后用ont-hot乘该矩阵即可。对于词向量的输出维度可以进行设置,一般为128维度
https://blog.csdn.net/buchidanhuang/article/details/99186395
keras.layers.Embedding(input_dim=word_num, output_dim=input_dimension)
这里要注意输入的维度是整个词典的个数
2:双向LSTM
搭建一个双向的lstm模型:LSTM模型可以减弱长期依赖的影响,可以较好的理解语义和语序
keras.layers.Bidirectional(keras.layers.LSTM(int(lstm_dim / 2), return_sequences=True))
return_sequences=False表示最后的结果只输出一个
return_sequences=True表示输出每个时间T的结果,在NLP来说就是每个词(可以把一个词看成一个T)的结果都输出,而不只是输出最后的整体结果
由于是双向模型,为了维持最后输出的模型维度,将int(lstm_dim / 2),最后的模型实际上是将向前计算的序列1与向后计算的序列2进行拼接,两个lstm_dim / 2拼接后的维度是lstm_dim,也是隐含层参数的个数
lstm输出的第一个维度就是时间维度【T,sequence_length,output_dim】,也可以认为是词的个数10
3:TimeDistributed
将lstm的结果再过一个全链接层,这里有一个TimeDistributed,可以理解成将dence层过Time次。如果放在NLP下面,就是将lstm输出的每个词向量(10个)分别过dence层
TimeDistributed(Dense(lstm_dim, activation="relu"))(lstm)
ReLu的使用,使得网络可以自行引入稀疏性。这一做法,等效于无监督学习的预训练
4:GlobalMaxPooling1D()
先计算匹配的相似度,在steps维度中求解feature全局最大值(batch_size, steps, features),最后输出一个(batch_size, features)。也就是看成匹配出相同batch_size大小的句子
GlobalMaxPooling1D()(q_out)
5:Dense
将问答进行拼接后太长,过一个dense层进行降维,然后再过有个sigmoid函数判断其是否适合
out = keras.layers.concatenate([q_out, a_out], axis=1)
out = Dense(50, activation="relu")(out)
out = Dense(1, activation="sigmoid")(out)
简单的梳理了下思路,理解有误的地方还请各位大侠指出~~~~~
keras 中的keras.preprocessing、Embedding、GlobalMaxPooling1D()、 TimeDistributed相关推荐
- keras中的keras.utils.to_categorical方法
to_categorical(y, num_classes=None, dtype='float32') 将整型标签转为onehot.y为int数组,num_classes为标签类别总数,大于max( ...
- python的matmul_浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
概述 在使用keras中的keras.backend.batch_dot和tf.matmul实现功能其实是一样的智能矩阵乘法,比如A,B,C,D,E,F,G,H,I,J,K,L都是二维矩阵,中间点表示 ...
- Keras vs tf.keras: 在TensorFlow 2.0中有什么区别?
导读 在本文中,您将发现Keras和tf.keras之间的区别,包括TensorFlow 2.0中的新增功能. 万众期待的TensorFlow 2.0于9月30日正式发布. 虽然肯定是值得庆祝的时刻, ...
- Keras与tf.keras:TensorFlow 2.0有什么区别?
在本教程的第一部分中,我们将讨论Keras和TensorFlow之间相互交织的历史,包括他们共同的受欢迎程度如何相互滋养,相互促进和滋养,使我们走向今天. 然后,我将讨论为什么您应该在以后的所 ...
- Keras vs. tf.keras: 在TensorFlow 2.0中有什么区别?
在本教程中,您将发现Keras和tf.keras之间的区别,包括TensorFlow 2.0中的新增功能. Keras vs. tf.keras: 在TensorFlow 2.0中有什么区别? htt ...
- 【小白学习keras教程】十一、Keras中文本处理Text preprocessing
@Author:Runsen 文章目录 Text preprocessing Tokenization of a sentence One-hot encoding Padding sequences ...
- keras中lstm参数_如何使用Keras为自定义NER构建深度神经网络
在这篇文章中,我们将学习如何使用Keras创建一个简单的神经网络来从非结构化文本数据中提取信息(NER). 模型架构 在这里,我们将使用BILSTM + CRF层.LSTM层用于过滤不需要的信息,将仅 ...
- Tensorflow Keras中的masking与padding的学习笔记
Tensorflow Keras中的masking与padding 1. 背景 2. padding填充序列数据例子 3. 遮盖(masking ) 3.1 添加一个 keras.layers.Mas ...
- 详解keras中的Mask机制
文章目录 一. Mask背景 1.2 例子1 1.2 例子2 二. 原理 三. 方式 3.1 配置keras.layers.Embedding 层 3.2 添加keras.layers.Masking ...
最新文章
- Widget(桌面插件)
- CF611F. New Year and Cleaning
- 【渝粤题库】陕西师范大学210019 学前教育科研方法 作业(专升本)
- Html 进行DOM 操作(放缩,颜色...),HTML抓图(放缩,滚动,拼接)
- 外贸网站需要ERP系统吗?
- matlab 文件列表,如何從Matlab寫入多個列表到同一個excel文件?
- python如何提高性能_python – 如何在这个短代码中提高numpy性能...
- git提交过滤target文件 idea_详解如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件...
- 利用jackson-dataformat-csv读写csv文件
- python实现微信聊天机器人_用python玩微信,实现聊天机器人,新手必学
- 扩展欧几里得___追风少年的坐骑(2016swust信息院赛)
- Solidjs 简介
- 使用jsfl批量生成fla文件(文件是在多个文件夹下)如果是单个文件夹下也可以
- 强迫症患者之黑苹果优化(启动画面、CPU重命名、显示真实主板、开启12代CPU全核心)
- React集成中国地图
- IBM将裁员1700人,科技公司最好的时代过去了吗?
- 在Linux中运行Nancy应用程序
- 无线路由速度简单解释
- PESD5V0F1BSF特性好处
- JS模块化的'前世今生'
热门文章
- 006-CSS定位布局
- python 类方法 实例方法的区别_python基础教程Python实例方法、类方法、静态方法区别详解...
- python文章伪原创_python制作伪原创文章?
- Linux 杀死所有进程
- 360浏览器的js兼容与360拦截浮动广告
- android格式转化,旭日Android视频格式转换器
- python爬虫滑动验证码_python爬虫21 | 对于b站这样的滑动验证码,不好意思,照样自动识别...
- PHP8.X的新特性
- 音视频开发-SRS 4.0开发环境搭建丨webrtc丨FFmpeg丨SRS流媒体服务器开发
- PS:制作波浪型烟雾效果的滤镜教程