keras 多层lstm_机器学习100天-Day2403 循环神经网络RNN(训练多层RNN)
说明:本文依据《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)相关推荐
- tensorflow lstm从隐状态到预测值_机器学习100天-Day2405 循环神经网络RNN(LSTM)
说明:本文依据<Sklearn 与 TensorFlow 机器学习实用指南>完成,所有版权和解释权均归作者和翻译成员所有,我只是搬运和做注解. 进入第二部分深度学习 第十四章循环神经网络 ...
- sklearn 神经网络_机器学习100天-Day2404 循环神经网络RNN(预测时间序列)
说明:本文依据<Sklearn 与 TensorFlow 机器学习实用指南>完成,所有版权和解释权均归作者和翻译成员所有,我只是搬运和做注解. 进入第二部分深度学习 第十四章循环神经网络 ...
- 深度学习之循环神经网络(5)RNN情感分类问题实战
深度学习之循环神经网络(5)RNN情感分类问题实战 1. 数据集 2. 网络模型 3. 训练与测试 完整代码 运行结果 现在利用基础的RNN网络来挑战情感分类问题.网络结构如下图所示,RNN网络共两 ...
- 深度学习之循环神经网络(4)RNN层使用方法
深度学习之循环神经网络(4)RNN层使用方法 1. SimpleRNNCell 2. 多层SimpleRNNCell网络 3. SimpleRNN层 在介绍完循环神经网络的算法原理之后,我们来学习如 ...
- NNDL 实验七 循环神经网络(1)RNN记忆能力实验
NNDL 实验七 循环神经网络(1)RNN记忆能力实验 第6章 循环神经网络 6.1 循环神经网络的记忆能力实验 6.1.1 数据集构建 6.1.1.1 数据集的构建函数 6.1.1.2 加载数据并进 ...
- 循环神经网络教程-第一部分 RNN介绍
循环神经网络教程-第一部分 RNN介绍 循环神经网络(RNN)是非常流行的模型,它在许多NLP任务上都表现出了巨大的潜力.虽然它很流行,但是详细介绍RNN以及如何实现RNN的文章却很少.这篇教程旨在解 ...
- 机器学习Basics-第十一期-循环神经网络RNN
https://www.toutiao.com/a6655276573958078987/ 2019-02-08 17:34:05 背景 本系列已经经历十期,上一期涵盖了卷积神经网络.从上一期大家也能 ...
- 什么是RNN?一文看懂强大的循环神经网络(Recurrent Neural Network, RNN)
循环神经网络(Recurrent Neural Network,RNN)是一类用于处理序列数据的神经网络.所谓序列数据,即前面的输入和后面的输入是有关系的,如一个句子,或者视频帧.就像卷积网络是专门用 ...
- 循环神经网络(Recurrent Neural Network, RNN)和递归神经网络(Recursive Neural Network, RNN),你搞清楚了吗?
一,循环神经网络: 原文:https://zybuluo.com/hanbingtao/note/541458 语言模型 RNN是在自然语言处理领域中最先被用起来的,比如,RNN可以为语言模型来建模. ...
最新文章
- 改变openssl的环境变量linux,ECS Linux 安装配置openssl的具体过程
- L1-055 谁是赢家-PAT团体程序设计天梯赛GPLT
- python能做什么-普通小白学会Python到底具体能做什么呢?
- 工业界论文被CVPR收录有捷径?| CVPR 2017
- 今日开放式基金净值表
- java实现火车票查询_java抓取12306信息实现火车余票查询示例
- 数据结构:串(String)【详解】
- 对学计算机学生礼仪,计算机学院举办“一学一做”之文明礼仪宣传月主题教育活动...
- mac修改默认python版本_Mac系统修改Python版本软链接
- 学编程,你不能学会了游泳再下水
- 事件抽取与事理图谱(一)
- CTF刷题记录CTFHub-RCE-命令注入
- 【java 微信公众号开发】 微信端获取code和opendId,access_token 步骤调试
- where 1=1 是什么有意思
- 第一章.1信息时代的安全威胁实验
- 如何用C语言编写简单的日历查询程序
- 有要做兼职的吗?我们做了一款app,找个推广合作人
- C#强制关机、重启以及注销计算机
- steam()的应用
- Problem B: 蒲福风力等级
热门文章
- onenote创建快速笔记--此分区尚不可用,它是从其他设备添加的,该设备同步后才将可用
- 什么叫光端机?视频光端机的分类具体有哪些?
- 【渝粤教育】21秋期末考试财务管理10164k2
- 【渝粤教育】国家开放大学2018年春季 0077-21T古代汉语专题 参考试题
- 【渝粤教育】电大中专公共基础课程_1作业 题库
- 【渝粤题库】国家开放大学2021春2441经济数学基础1题目
- 蓝桥杯基础模块4_1:独立按键
- zeal刷新不出来_推进重涂市场标准化,立邦率先推出刷新服务“八大验收标准”...
- Latex快速入门系列 -- 在TexStudio中正确插入参考文献的基本操作
- Matlab查看数组大小的命令——size、length、numel和ndims