IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> keras 中的keras.preprocessing、Embedding、GlobalMaxPooling1D()、 TimeDistributed -> 正文阅读

[人工智能]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)

简单的梳理了下思路,理解有误的地方还请各位大侠指出~~~~~

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-30 12:44:50  更:2021-07-30 12:45:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:38:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码