本例子是“IMDB sentiment classification task”,用单层LSTM实现。
1. 输入数据预处理
输入文本数据统一规整到长度maxlen=80个单词,为什么呢?
是不是长度太长时训练容易发散掉,这样就限制了记忆的长度了。
x_train = sequence.pad_sequences(x_train, maxlen=maxlen)
有没有动态的呢?因为输入的句子长度本身是动态长度的。
2. Embedding layer
代码中,max_features=20000对应的是词汇量大小。
关于Embedding Vector,如果是中文的,怎么处理呢?
在RNN训练过程中Embedding Vector是否也参与了训练呢?如何选择?
3. 关于RNN的模型架构的理解
Embedding Vector是128维的,隐层是128个节点(也可以是其他数值)。
Embedding Vector与隐层的节点是全连接的,隐层每个节点自带存储单元的。
在这个128节点的隐层之上,有一个Dense节点。这个Dense节点是和128节点的隐层全连接的。
Foward过程就是每次输入80个单词中的一个,直到最后一个单词输入结束,Dense节点最终的输出就是估计的Y值了

完整代码如下:
'''Trains a LSTM on the IMDB sentiment classification task.The dataset is actually too small for LSTM to be of any advantagecompared to simpler, much faster methods such as TF-IDF + LogReg.Notes:- RNNs are tricky. Choice of batch size is important,choice of loss and optimizer is critical, etc.Some configurations won't converge.- LSTM loss decrease patterns during training can be quite differentfrom what you see with CNNs/MLPs/etc.'''from __future__ import print_functionfrom keras.preprocessing import sequencefrom keras.models import Sequentialfrom keras.layers import Dense, Embeddingfrom keras.layers import LSTMfrom keras.datasets import imdbmax_features = 20000maxlen = 80  # cut texts after this number of words (among top max_features most common words)batch_size = 32print('Loading data...')(x_train, y_train), (x_test, y_test) = imdb.load_data(nb_words=max_features)print(len(x_train), 'train sequences')print(len(x_test), 'test sequences')print('Pad sequences (samples x time)')x_train = sequence.pad_sequences(x_train, maxlen=maxlen)x_test = sequence.pad_sequences(x_test, maxlen=maxlen)print('x_train shape:', x_train.shape)print('x_test shape:', x_test.shape)print('Build model...')model = Sequential()model.add(Embedding(max_features, 128))#model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2))
model.add(LSTM(128))model.add(Dense(1, activation='sigmoid'))# try using different optimizers and different optimizer configsmodel.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])print('Train...')model.fit(x_train, y_train,batch_size=batch_size,nb_epoch=15,validation_data=(x_test, y_test))score, acc = model.evaluate(x_test, y_test,batch_size=batch_size)print('Test score:', score)print('Test accuracy:', acc)
通过summary()得到的函数统计如下:
____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to
====================================================================================================
embedding_3 (Embedding)          (None, None, 128)     2560000     embedding_input_1[0][0]
____________________________________________________________________________________________________
lstm_1 (LSTM)                    (None, 128)           131584      embedding_3[0][0]
____________________________________________________________________________________________________
dense_9 (Dense)                  (None, 1)             129         lstm_1[0][0]
====================================================================================================
Total params: 2,691,713
Trainable params: 2,691,713
Non-trainable params: 0

Keras学习---RNN模型建立篇相关推荐

  1. cnn stride and padding_Tensorflow学习笔记- 模型建立与训练篇(CNN)

    这次就用Keras实现下CNN 一. 预备知识--CNN[1] 1. 二维互相关(cross-correlation)运算:计算 , 属于输入数组, 属于卷积窗口,n和m取决于窗口的大小. 核数组(卷 ...

  2. Keras学习---MLP和CNN模型建立篇

    目前阶段,仅考虑线线性堆叠且单输出的网络结构,更复杂的网络有多任务(即多输出)的网络拓扑结构. 1. 最简单的MLP模型 model.add(Dense(512, input_shape=(784,) ...

  3. 【算法竞赛学习】气象海洋预测-Task4 模型建立之 TCNN+RNN

    气象海洋预测-Task4 模型建立之 TCNN+RNN 该方案中采用的模型是TCNN+RNN. 在Task3中我们学习了CNN+LSTM模型,但是LSTM层的参数量较大,这就带来以下问题:一是参数量大 ...

  4. 【社区分享】从零开始学习 TinyML,建立 TensorFlow 深度学习模型(技术优化篇)

    TinyML是什么?如何从零开始入门学习?本系列上一篇教程中,我们复习了 TinyML 的概念,完成了一个最简单的 ML 模型与微控制器运行.今天,本教程将与你探讨如何在实际的工程应用中对已建立的模型 ...

  5. Keras学习笔记:函数式模型

    目录: 目录: 函数式(Functional)模型 第一个模型:全连接网络 多输入和多输出模型 让我们用函数式模型来实现这个框图 共享层 更多的例子 inception模型 卷积层的残差连接 共享视觉 ...

  6. Keras学习笔记:序列式模型

    目录: 目录: 快速开始序列(Sequential)模型 指定输入数据的shape 编译 训练 例子 用于序列分类的栈式LSTM 采用stateful LSTM的相同模型 本系列参考官方文档官方文档 ...

  7. 深度学习模型建立过程_所有深度学习都是统计模型的建立

    深度学习模型建立过程 Deep learning is often used to make predictions for data driven analysis. But what are th ...

  8. Tensorflow.Keras 时序回归模型的建立

    Learn from Keras官方网站 目前tensorflow 2.0版本已经集成了keras的所有功能,所以直接安装tensorflow就可以调用Keras,非常方便. 作为Keras入门可以看 ...

  9. keras 受限玻尔兹曼机_目前深度学习的模型有哪几种,适用于哪些问题?

    深度学习的模型有很多, 目前开发者最常用的深度学习模型与架构包括 CNN.DBN.RNN.RNTN.自动编码器.GAN 等.雷锋网搜集整理了涉及以上话题的精品文章,供初学者参考,加速深度学习新手入门. ...

最新文章

  1. html中div裹div,html – 围绕div包裹textarea输入
  2. jq定制上传按钮,选择文件就上传
  3. 把CheckBox的方块换成图片或其他
  4. Chrome渲染Transition时页面闪动Bug
  5. Linux配置手册(五)Linux 配置域名服务器(DNS)
  6. okhttp返回内容乱码_okHttp 采坑指南-interceptor(乱码)
  7. windows安装和使用git工具
  8. python 货币换算库,货币转换python代码你知道怎么写吗?
  9. 简历制作器App隐私政策
  10. Simulink 环境基础知识(四)--保存模型
  11. linux I2C驱动实验
  12. 暴雪插件占用服务器,你还在用这款插件吗?暴雪公布《魔兽世界》怀旧服卡顿原因...
  13. 学习笔记 | 朴素贝叶斯、拉普拉斯修正
  14. Unity让图片动起来
  15. java ipc pgsql_[转]PostgreSQL源码结构
  16. canoe 分析log_CANoe教程 | 分析功能-Trace窗口
  17. fgets 函数用法
  18. Linux系统调用 - 文件操作
  19. 压力传感器称重测力防水等级国际级精度区别及基本常识
  20. 时间管理软件 压力测试软件JMeter 微信小程序可视化代码生成 黑客网站

热门文章

  1. PBRT 学习:安装编译
  2. 大数据面试求职经验总结
  3. Java-HashMap实现原理
  4. 在html中解决数字四舍五入,JavaScript四舍五入及精度丢失问题
  5. mac怎么装java eclipse_如何在Mac系统安装eclipse并运行java程序
  6. 计算机主板及其硬件图,[计算机硬件及网络]intel G43主板电路图.pdf
  7. 如何计算像素当量_「轴承知识」如何通过静承载能力选择轴承
  8. 石子合并简化版(区间DP)
  9. css的font修改颜色,css的font字体颜色如何设置
  10. RDD的两种操作(Transformation和Action)