说明:本文依据《Sklearn 与 TensorFlow 机器学习实用指南》完成,所有版权和解释权均归作者和翻译成员所有,我只是搬运和做注解。

进入第二部分深度学习

第十四章循环神经网络

循环神经网络可以分析时间序列数据,诸如股票价格,并告诉你什么时候买入和卖出。在自动驾驶系统中,他们可以预测行车轨迹,避免发生交通意外。

循环神经网络可以在任意长度的序列上工作,而不是之前讨论的只能在固定长度的输入上工作的网络。

举个例子,它们可以把语句,文件,以及语音范本作为输入,使得它们在诸如自动翻译,语音到文本或者情感分析(例如,读取电影评论并提取评论者关于该电影的感觉)的自然语言处理系统中极为有用。

另外,循环神经网络的预测能力使得它们具备令人惊讶的创造力。

可以要求它们去预测一段旋律的下几个音符,随机选取这些音符的其中之一并演奏它。然后要求网络给出接下来最可能的音符,演奏它,如此周而复始。

同样,循环神经网络可以生成语句,图像标注等。

在本章中,教程介绍以下几点

  • 循环神经网络背后的基本概念
  • 循环神经网络所面临的主要问题(在第11章中讨论的消失/爆炸的梯度),广泛用于反抗这些问题的方法:LSTM 和 GRU cell(单元)。
  • 展示如何用 TensorFlow 实现循环神经网络。最终我们将看看及其翻译系统的架构。

5.构建多层RNN

我们在这里构建一个三层的RNN。

基本参数设定如下

n_steps = 28n_inputs = 28n_neurons = 100n_outputs = 10learning_rate = 0.001n_layers = 3

构建三层,可以发现是使用for循环,循环3次将之前一层的神经网络复制成三个压入一个layers得list中。

layers = [tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu)for layer in range(n_layers)]

然后使用tf.nn.rnn_cell.MultiRNNCell(layers)处理layers。

X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])y = tf.placeholder(tf.int32, [None])# 原始一层的神经网络# basic_cell = tf.keras.layers.SimpleRNNCell(units=n_neurons)layers = [ tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu) for layer in range(n_layers)]# 这个地方应该也可以使用Keras,但是没有查到multi_layer_cell = tf.nn.rnn_cell.MultiRNNCell(layers)outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)# tf.concat是连接两个矩阵的操作,其中values应该是一个tensor的list或者tuple。axis则是我们想要连接的维度。tf.concat返回的是连接后的tensor。states_concat = tf.concat(axis=1, values=states)logits = tf.layers.dense(states_concat, n_outputs)xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)loss = tf.reduce_mean(xentropy)optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)training_op = optimizer.minimize(loss)correct = tf.nn.in_top_k(logits, y, 1)accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))init = tf.global_variables_initializer()(X_train, y_train), (X_test, y_test) = tf.keras.datasets.mnist.load_data()X_train = X_train.astype(np.float32).reshape(-1, 28 * 28) / 255.0X_test = X_test.astype(np.float32).reshape(-1, 28 * 28) / 255.0y_train = y_train.astype(np.int32)y_test = y_test.astype(np.int32)X_valid, X_train = X_train[:5000], X_train[5000:]y_valid, y_train = y_train[:5000], y_train[5000:]def shuffle_batch(X, y, batch_size): rnd_idx = np.random.permutation(len(X)) n_batches = len(X) // batch_size for batch_idx in np.array_split(rnd_idx, n_batches): X_batch, y_batch = X[batch_idx], y[batch_idx] yield X_batch, y_batchX_test = X_test.reshape((-1, n_steps, n_inputs))n_epochs = 10batch_size = 150with tf.Session() as sess: init.run() for epoch in range(n_epochs): for X_batch, y_batch in shuffle_batch(X_train, y_train, batch_size): X_batch = X_batch.reshape((-1, n_steps, n_inputs)) sess.run(training_op, feed_dict={X: X_batch, y: y_batch}) acc_batch = accuracy.eval(feed_dict={X: X_batch, y: y_batch}) acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test}) print(epoch, "Last batch accuracy:

keras 多层lstm_机器学习100天-Day2403 循环神经网络RNN(训练多层RNN)相关推荐

  1. tensorflow lstm从隐状态到预测值_机器学习100天-Day2405 循环神经网络RNN(LSTM)

    说明:本文依据<Sklearn 与 TensorFlow 机器学习实用指南>完成,所有版权和解释权均归作者和翻译成员所有,我只是搬运和做注解. 进入第二部分深度学习 第十四章循环神经网络 ...

  2. sklearn 神经网络_机器学习100天-Day2404 循环神经网络RNN(预测时间序列)

    说明:本文依据<Sklearn 与 TensorFlow 机器学习实用指南>完成,所有版权和解释权均归作者和翻译成员所有,我只是搬运和做注解. 进入第二部分深度学习 第十四章循环神经网络 ...

  3. 深度学习之循环神经网络(5)RNN情感分类问题实战

    深度学习之循环神经网络(5)RNN情感分类问题实战 1. 数据集 2. 网络模型 3. 训练与测试 完整代码 运行结果  现在利用基础的RNN网络来挑战情感分类问题.网络结构如下图所示,RNN网络共两 ...

  4. 深度学习之循环神经网络(4)RNN层使用方法

    深度学习之循环神经网络(4)RNN层使用方法 1. SimpleRNNCell 2. 多层SimpleRNNCell网络 3. SimpleRNN层  在介绍完循环神经网络的算法原理之后,我们来学习如 ...

  5. NNDL 实验七 循环神经网络(1)RNN记忆能力实验

    NNDL 实验七 循环神经网络(1)RNN记忆能力实验 第6章 循环神经网络 6.1 循环神经网络的记忆能力实验 6.1.1 数据集构建 6.1.1.1 数据集的构建函数 6.1.1.2 加载数据并进 ...

  6. 循环神经网络教程-第一部分 RNN介绍

    循环神经网络教程-第一部分 RNN介绍 循环神经网络(RNN)是非常流行的模型,它在许多NLP任务上都表现出了巨大的潜力.虽然它很流行,但是详细介绍RNN以及如何实现RNN的文章却很少.这篇教程旨在解 ...

  7. 机器学习Basics-第十一期-循环神经网络RNN

    https://www.toutiao.com/a6655276573958078987/ 2019-02-08 17:34:05 背景 本系列已经经历十期,上一期涵盖了卷积神经网络.从上一期大家也能 ...

  8. 什么是RNN?一文看懂强大的循环神经网络(Recurrent Neural Network, RNN)

    循环神经网络(Recurrent Neural Network,RNN)是一类用于处理序列数据的神经网络.所谓序列数据,即前面的输入和后面的输入是有关系的,如一个句子,或者视频帧.就像卷积网络是专门用 ...

  9. 循环神经网络(Recurrent Neural Network, RNN)和递归神经网络(Recursive Neural Network, RNN),你搞清楚了吗?

    一,循环神经网络: 原文:https://zybuluo.com/hanbingtao/note/541458 语言模型 RNN是在自然语言处理领域中最先被用起来的,比如,RNN可以为语言模型来建模. ...

最新文章

  1. 改变openssl的环境变量linux,ECS Linux 安装配置openssl的具体过程
  2. L1-055 谁是赢家-PAT团体程序设计天梯赛GPLT
  3. python能做什么-普通小白学会Python到底具体能做什么呢?
  4. 工业界论文被CVPR收录有捷径?| CVPR 2017
  5. 今日开放式基金净值表
  6. java实现火车票查询_java抓取12306信息实现火车余票查询示例
  7. 数据结构:串(String)【详解】
  8. 对学计算机学生礼仪,计算机学院举办“一学一做”之文明礼仪宣传月主题教育活动...
  9. mac修改默认python版本_Mac系统修改Python版本软链接
  10. 学编程,你不能学会了游泳再下水
  11. 事件抽取与事理图谱(一)
  12. CTF刷题记录CTFHub-RCE-命令注入
  13. 【java 微信公众号开发】 微信端获取code和opendId,access_token 步骤调试
  14. where 1=1 是什么有意思
  15. 第一章.1信息时代的安全威胁实验
  16. 如何用C语言编写简单的日历查询程序
  17. 有要做兼职的吗?我们做了一款app,找个推广合作人
  18. C#强制关机、重启以及注销计算机
  19. steam()的应用
  20. Problem B: 蒲福风力等级

热门文章

  1. onenote创建快速笔记--此分区尚不可用,它是从其他设备添加的,该设备同步后才将可用
  2. 什么叫光端机?视频光端机的分类具体有哪些?
  3. 【渝粤教育】21秋期末考试财务管理10164k2
  4. 【渝粤教育】国家开放大学2018年春季 0077-21T古代汉语专题 参考试题
  5. 【渝粤教育】电大中专公共基础课程_1作业 题库
  6. 【渝粤题库】国家开放大学2021春2441经济数学基础1题目
  7. 蓝桥杯基础模块4_1:独立按键
  8. zeal刷新不出来_推进重涂市场标准化,立邦率先推出刷新服务“八大验收标准”...
  9. Latex快速入门系列 -- 在TexStudio中正确插入参考文献的基本操作
  10. Matlab查看数组大小的命令——size、length、numel和ndims