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

eb9e0f590701dccd90840b161e3f7c80.png

说明:本文依据《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:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新手上路之django项目开发(一)-----创建项目并运行

一,创建项目 1,PyCharm创建 或者 2,django-admin startproject mysite mysite 是项目名。 二,配置settings.py文件 创建templates目录,static目录 settings.py文件中加入:os.path.join(BASE_DIR, ‘tem…

lisp语言画阿基米德线_中国油画艺术表达着艺术家思想情感,而且展现了油画语言独特之美...

感谢大家阅读,在阅读之前,麻烦您先点击上面的“蓝色字体”,再点击“关注”, 因为微信更改了推送规则,推文不再按照时间线显示,如果不点『在看』或者没有『星标』,可能就看不到我们的推送了&…

创建新的option

创建新的option element.add(new Option(value,date))https://www.cnblogs.com/duanhuajian/archive/2013/06/09/3129365.html 转载于:https://www.cnblogs.com/ar13/p/8139030.html

java btrace_BTrace for Java应用程序简介

java btrace本文的目的是学习如何使用BTrace动态跟踪/观察正在运行的Java应用程序(JDK 6),而无需更改应用程序的代码和配置参数。 什么是BTrace? BTrace是一个开源项目,始于2007年,最初由A.Sundararajan和…

新手上路之django项目开发(二)-----引入静态文件

1&#xff0c;settings.py文件配置 STATIC_URL /static/STATICFILES_DIRS [os.path.join(BASE_DIR, static) ]2&#xff0c;html页面中引入 <script src"/static/jquery-1.11.1.min.js"></script>

python tkinter Listbox用法

python tkinter组件的Listbox的用法&#xff0c;见下面代码的演示&#xff1a; 1 from tkinter import *2 3 rootTk()4 vStringVar()5 #Listbox与变量绑定6 lb1Listbox(root,listvariablev)7 v.set((10,20,30,40,50))8 print(v.get())9 lb1.pack() 10 11 #.创建一个可以多选的…

我的世界javamod怎么装_「装修细节」除了中央空调外的高颜值装空调大法

一直觉得中央空调是高颜值神器但是对于我这种万年单身狗在考虑开启率的情况下好像还是风管机和挂机比较实用但是又嫌弃挂机的电线冷凝水管丑到不行直到我看到了-----管线背出的挂机仿佛开启了新世界的大门| 怎么做到的 |我问了好多卖中央空调的有没有管线背出的挂机都和我说不清…

在Spring Rest模板中跳过SSL证书验证

使用Spring Rest模板时如何跳过SSL证书验证&#xff1f; 配置Rest Template&#xff0c;以便它使用Http Client创建请求。 注意&#xff1a;如果您熟悉sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested ta…

新手上路之django项目开发(二)-----mysql数据库配置及其增删改查操作

1&#xff0c;数据库配置&#xff08;settings.py文件配置&#xff09; 我这里用的是本地数据库。 DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: information,USER: root,PASSWORD: ,HOST: 127.0.0.1,PORT: 3306,} }NAME是数据库名称&#xff0c;USER是MYS…

C#编程高并发的几种处理方法

并发&#xff08;英文Concurrency&#xff09;&#xff0c;其实是一个很泛的概念&#xff0c;字面意思就是“同时做多件事”&#xff0c;不过方式有所不同。在.NET的世界里面&#xff0c;处理高并发大致有以下几种方法&#xff1a; 1&#xff0c;异步编程 异步编程就是使用futu…

lua检测表中是否有某个值_Lua检测数组(tabble)中是否包含某个值

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":9,"count":9}]},"card":[{"des":"兼容Redis协议标准的、提供持久化的内存数据…

rm删除文件显示:Operation not permitted

当需要删除某个文件夹或者文件时&#xff0c;提示Operation not permitted&#xff0c;表示不允许操作。 解决方法如图 chattr -i .user.ini 注释&#xff1a; rm -rf 目录名字 &#xff1a;删除 -r 就是向下递归&#xff0c;不管有多少级目录&#xff0c;一并删除 -f 就是直…

sublime 代码格式化

插件&#xff1a; SublimeAStyleFormatter Package Control Messages SublimeAStyleFormatter---------------------- SublimeAStyleFormatter SublimeAStyleFormatter is a simple code formatter plugin for Sublime Text 2. It provides ability to format C, C, C#, and J…

xslt 标签取集合第一条数据_1+x证书Web前端开发中级理论考试(试卷1)

2019年下半年 Web前端开发中级 理论考试 (考试时间19:00-20:30 共150分钟&#xff0c;测试卷1) 本试卷共3道大题&#xff0c;满分100分。请在指定位置作答。一、单选题(每小题2分&#xff0c;共30小题&#xff0c;共60分) 1、a标签中哪一个属性是表示跳转路径的(B) A&#xff…

glassfish5_将Glassfish 3连接到外部ActiveMQ 5代理

glassfish5介绍 在ONVZ&#xff0c;我们将Glassfish 3用作开发和生产应用服务器&#xff0c;我们对其性能和稳定性以及周围的广大社区感到非常满意。 我很少遇到在stackoverflow或java.net上没有匹配解决方案的问题。 作为我们开源策略的一部分&#xff0c;我们还运行了一个定制…

Linux下安装并使用MySQL数据库

注意&#xff1a;如果是配合python使用的话&#xff0c;连接数据库的时候注意python2使用的是mysqldb&#xff0c;python3使用的是pymysql。详细看第三点。 一&#xff0c;首先设置安全组 开放MySQL的默认端口3306 二&#xff0c;安装MySQL服务 在官网查找最新版本的下载链…

Vue 2.0 入门系列(15)学习 Vue.js 需要掌握的 es6 (2)

类与模块 类 es6 之前&#xff0c;通常使用构造函数来创建对象 // 构造函数 User function User(username, email) { this.username username; this.email email; } // 为了让实例共享方法&#xff0c;将其添加到原型上 User.prototype.changeEmail function(newEmail) { th…

Windows下安装并使用MySQL数据库

MySQL是一款免费开源的关系型数据库&#xff0c;很多中小型企业开发项目都选择使用MySQL数据库&#xff0c;所以大家也在优先选择学习MySQL数据库。 一&#xff0c;安装 1.打开MySQL下载地址&#xff0c;MySQL官方下载地址https://dev.mysql.com/downloads/mysql/。 2.选择自…

您的第一个Lagom服务– Java Microservices入门

在撰写我的下一份OReilly报告时&#xff0c;我一直很沮丧&#xff0c;而且一段时间内没有足够的时间来撰写博客。 是时候赶快来这里&#xff0c;让您真正快速地开始使用名为Lagom的新微服务框架。 它与您从Java EE或其他应用程序框架中可能了解到的有所不同。 这对您来说是学习…

android 记录路线轨迹_基于百度地图SDK记录运动轨迹

标签 &#xff1a; 运动轨迹 百度地图SDK最终实现的效果如下图所示###注意1&#xff1a;模拟器上模拟要设置好Location(如果选择None就无法定位了),同时第一次打开应用会提示授权使用地理位置信息,点击允许即可。设置效果图1注意2:由上图的经纬度反查可知这是美国的一个州&…