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 ...
最新文章
- 几张图片总结我的2015年
- CSS布局(五) 网页布局方式
- 解决 c3p0 和 MySQL 集成情况下,连接长时间闲置后重新使用时报错的问题
- 一年级学情分析计算机,小学一年级语文学情分析范文
- 曲线相似度衡量——曲线距离计算Fréchet distance详解与python计算
- myeclipse文档链接oracle,[数据库]MyEclipse 连接Oracle数据库(初学者必看)
- linux终端中书名号,Linux双引号、单引号和反向单引号
- 基于Javaweb实现小区物业管理系统
- h5 移动端电子签名
- 教你查看预装Win8电脑内置系统激活密钥(Win8 OEM Key)
- [印刷工艺]从正度纸,大度纸说起
- 加拿大康考迪亚计算机工程,加拿大康考迪亚
- 读薄《高性能MySql》(三)索引优化
- MySQL DATE_SUB() -- 从日期减去指定的时间间隔
- uniapp基础介绍
- 学透CSS-当CSS遇到古诗和月亮,月亮动起来!!!
- 前端开发相关的学习网站
- PgSQL修改字段备注
- 华为交换机access、trunk、hybrid口区别理解
- [Java面试九]脚本语言知识总结.