深度学习之RNN

1.循环神经网络

在时间t的时候,对于单个神经元来讲它的输出y(t)如下

y(t)=F(\omega_x *x(t) +\omega_y * y(t-1))

wx是对于输入x的权重,wy是对于上一时刻输出的权重

所以循环神经网络有两个权重。

如果有很多这样的神经元并排在一起

 则在t时刻的输出y为

y(t)=\varnothing (\omega_x*x(t)+\omega_y*y(t-1)+b )

这时输入输出都是向量

2.记忆单元

由于循环神经网络的输入与上个时间有关,因此可以认为RNN具有记忆功能。但是RNN在最开始出现的时候,并没有很好的记忆能力,在keras中存在三种RNN,SimpleRNN,GRU,LSTM,其中SimpleRNN就存在深度学习中梯度消失的问,为了解决这个问题,出现了LSTM.

3.输入输出的序列

对于RNN,输入序列是按照[批量大小,时间步长,特征维度]输入,是一个三维矩阵。但是也可能是二维矩阵。下面分开讲解输入输出的类型

第一种:输入是三维矩阵,输出三维矩阵;

这种输入输出一般叫做序列到序列

我有32种类型的彩票,每一种彩票有100天的号码,每个号码的长度是7位数,那么把这个数据如数到RNN,输入的维度就是[32,100,,7]。

输出时第2到:101天的32种彩票的7位数号码,那么它的维度可以是[32,100,7]

第二种:输入是三维矩阵,输出是二维矩阵;

这种输入输出模式叫做

比如,我们可能只关心101天的结果,那么他就是[32,7]

第三种,输入时二维矩阵,输出是三维矩阵

这种是向量到序列的输入输出模式,但是一般来讲,输入也是一个三维矩阵

在每一个时间步长输入相同的输入向量,输出一个序列。

第四种:编码器解码器模式

这种模式就跟RNN的语言翻译一样,编码器把序列编码为向量,解码器把向量解码为序列。

在tensorflow种输入一般都是三维矩阵,如果你的数据是二维[m,n],则将其升高一个维度就可以了,变成[m,n,1]

4.创建一个RNN网络

个人电脑很难运行起RNN,十分损耗资源。

tensorflow提供了如下几个RNN

(1).SimpleRNN

(2).GRU

(3).LSTM

其中第一个和第二个用的比较少,这是因为普通的RNN梯度不稳定,而且记忆能力十分有限,因此推出了LSTM,GRU时LSTM的简化版,计算效率高,性能虽然比不上LSTM,但是性能还不错。

关于lstm的结构不是本文的研究重点。

创建一个循环神经网络

lstm_1 = keras.layers.LSTM(100, reture_sequence=True)(last_output)

输入是上一层的输出,这里要求last_output的维度是三维

100个节点

returen_sequence:代表是否返回时间序列,如果你只关系之后一个时间,就可以选择False

如果你想写深度循环神经网络,那么就需要选择True

选择True输出就有三维,选择false输出则只有两个维度。

关于RNN的细节之后再补充,RNN的运用也是。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

liunx系统突然不能启动jar

启动命令 nohup java -jar /date/gd_ly/jar/mssda-platform-backend-0.0.1-SNAPSHOT.jar -Dspring.config.location/date/gd_ly/jar/application-dev.yml 报错信息 Error: A JNI error has occurred, please check your installation and try again Exception in thread &q…

【起草】【第五章】定制ChatGPT数字亲人

身为普普通通的我们,不知道亲人们在哪一天就要离开这个世界 ? 作为普普通通的程序员,我们可以为我们的亲人做点什么 ? 让他们以某种形式留在人世间 ? 对话|6岁女孩病逝捐器官,妈妈:她去当天使…

Qt+Opencv:人脸检测

话接上一篇,我们仍使用在上篇《QtOpencv:Qt中部署opencv》创建的Qt项目来测试opencv提供的sample。 在正式开始本篇之前,我们先说做一下准备工作: 一、opencv官方文档 学习最权威和最可靠的方式,就是阅读官方文档和…

释放资源的方式

为什么要学这个释放资源的方式? //5 关流outputStream.close();inputStream.close();原来这种方式,一般项目都会有很多代码,万一前面的代码有异常,就无法执行到这一步,绑定的系统资源就得不到释放,影响系统…

腾讯云服务器和轻量服务器选哪个好(各自的优势区别)

腾讯云轻量服务器和云服务器CVM该怎么选?不差钱选云服务器CVM,追求性价比选择轻量应用服务器,轻量真优惠呀,活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三…

CGAL的形状规则化

规则化之前(红色)和之后(绿色)的闭合轮廓。 1、介绍 这个 CGAL包能够规范2D中的一组线段和开闭轮廓以及3D中的一组平面,以便所有输入对象根据用户指定的条件进行旋转和对齐。此外,我们提供了一个全局规范框…

linux cuda环境搭建

1,检查驱动是否安装 运行nvidia-smi,如果出现如下界面,说明驱动已经安装 记住cuda版本号 2,安装cudatoolkit 上官网CUDA Toolkit Archive | NVIDIA Developer 根据操作系统选择对应的toolkit 如果已经安装了驱动,选…

main函数的参数ac和av

概要: main函数有两个参数,ac和av ac表示参数的个数,程序名包括在内。也就是说程序无参数运行时,ac的值为1 av是一个字符串数组,这个数组中的每个元素表示一个参数,程序名包括在内。也就是说&#xff0c…

【iptables】增加规则和删除规则

我们在另外一台机器上,使用ping命令,向当前机器发送报文,如下图所示,ping命令可以得到回应,证明ping命令发送的报文已经正常的发送到了防火墙所在的主机,ping命令所在机器IP地址为31.133(黑色&a…

idea 如何快速拉取新分支

方式1 (快捷键:CtrlShift~) 方式2:(快捷键:Alt9)

第八章 Gateway网关

Gateway网关 gitee:springcloud_study: springcloud:服务集群、注册中心、配置中心(热更新)、服务网关(校验、路由、负载均衡)、分布式缓存、分布式搜索、消息队列(异步通信)、数据库集群、分布…

java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ 可定制化

工程项目管理软件是现代项目管理中不可或缺的工具,它能够帮助项目团队更高效地组织和协调工作。本文将介绍一款功能强大的工程项目管理软件,该软件采用先进的Vue、Uniapp、Layui等技术框架,涵盖了项目策划决策、规划设计、施工建设到竣工交付…

第二章 iptables防火墙

2.1 Linux 防火墙基础 在 Internet 中,企业通过架设各种应用系统来为用户提供各种网络服务,如 Web 网站、 电子邮件系统、 FTP 服务器、数据库系统等。那么,如何来保护这些服务器,过滤企业不 需要的访问甚至是恶意的入侵…

Linux管理LVM逻辑卷

目录 一、LVM逻辑卷介绍 1. 概述 2. LVM基本术语 2.1 PV(Physical Volume,物理卷) 2.2 VG (Volume Group,卷组) 2.3 LV (Logical Volume,逻辑卷) 3. 常用的磁盘命令 4. 查看系统信息的命…

字符串转成时间的SQL,一个多种数据库通用的函数

select date 2010-10-06 from dual; date 函数,此函数适用于: 1.MySQL数据库 2.Oracle数据库 3.达梦数据库 4.人大金仓数据库

机器学习三要素与拟合问题

1.如何构建机器学习模型? 机器学习工作流程总结 1.获取数据 2.数据基本处理 3.特征工程 4.机器学习(模型训练) 5.模型评估 结果达到要求,上线服务,没有达到要求,重新上面步骤 我们使用机器学习监督学习分类预测模型的工作流…

python flask学生成绩管理系统,包含使用文档

python flask学生成绩管理系统。 一.功能介绍 系统交互 登录无需注册功能 学生以学生编号为用户名,密码默认为学生编号,可修改教师以教师编号为用户名,密码默认为教师编号,可修改管理员以admin作为用户名,密码为固定…

【Python基础】字符串

文章目录 [toc]什么是字符串索引示例索引越界 切片语法示例 字符串方法find()方法rfind()方法count()方法replace()方法 个人主页:丷从心 系列专栏:Python基础 什么是字符串 如下定义的变量url存储的是字符串类型的值 url www.baidu.com print(url)u…

【经验分享】日常开发中的故障排查经验分享(一)

目录 简介CPU飙高问题1、使用JVM命令排查CPU飙升100%问题2、使用Arthas的方式定位CPU飙升问题3、Java项目导致CPU飙升的原因有哪些?如何解决? OOM问题(内存溢出)1、如何定位OOM问题?2、OOM问题产生原因 死锁问题的定位…

【力扣】20.有效的括号

家人们,看这排序,一看就很简单,对吧?不对,我觉得还挺不是很容易的,哈哈哈。 题解: 在看题目的时候,我一开始的解题思路就挺复杂的。题目说了”左括号必须以正确的顺序闭合“&#x…