使用PyTorch从零开始构建Elman循环神经网络

摘要: 循环神经网络是如何工作的?如何构建一个Elman循环神经网络?在这里,教你手把手创建一个Elman循环神经网络进行简单的序列预测。

本文以最简单的RNNs模型为例:Elman循环神经网络,讲述循环神经网络的工作原理,即便是你没有太多循环神经网络(RNNs)的基础知识,也可以很容易的理解。为了让你更好的理解RNNs,我们使用Pytorch张量包和autograd库从头开始构建Elman循环神经网络。该文中完整代码在Github上是可实现的。

在这里,假设你对前馈神经网络略有了解。Pytorch和autograd库更为详细的内容请查看我的其他教程。

图片描述

Elman循环神经网络

Jeff Elman首次提出了Elman循环神经网络,并发表在论文《Finding structure in time》中:它只是一个三层前馈神经网络,输入层由一个输入神经元x1和一组上下文神经元单元{c1 … cn}组成。隐藏层前一时间步的神经元作为上下文神经元的输入,在隐藏层中每个神经元都有一个上下文神经元。由于前一时间步的状态作为输入的一部分,因此我们可以说,Elman循环神经网络拥有一定的内存——上下文神经元代表一个内存。

预测正弦波

现在,我们来训练RNNs学习正弦函数。在训练过程中,一次只为模型提供一个数据,这就是为什么我们只需要一个输入神经元x1,并且我们希望在下一时间步预测该值。输入序列x由20个数据组成,并且目标序列与输入序列相同。

图片描述

模型实现

首先导入包。

图片描述

接下来,设置模型的超参数。设置输入层的大小为7(6个上下文神经元和1个输入神经元),seq_length用来定义输入和目标序列的长度。

图片描述

生成训练数据:x是输入序列,y是目标序列。

图片描述

创建两个权重矩阵。大小为(input_size,hidden_size)的矩阵w1用于隐藏连接的输入,大小为(hidden_size,output_size)的矩阵w2用于隐藏连接的输出。 用零均值的正态分布对权重矩阵进行初始化。

图片描述

定义forward方法,其参数为input向量、context_state向量和两个权重矩阵,连接input和context_state创建xh向量。对xh向量和权重矩阵w1执行点积运算,然后用tanh函数作为非线性函数,在RNNs中tanh比sigmoid效果要好。 然后对新的context_state和权重矩阵w2再次执行点积运算。 我们想要预测连续值,因此这个阶段不使用任何非线性。

请注意,context_state向量将在下一时间步填充上下文神经元。 这就是为什么我们要返回context_state向量和out。

图片描述

训练

训练循环的结构如下:

1.外循环遍历每个epoch。epoch被定义为所有的训练数据全部通过训练网络一次。在每个epoch开始时,将context_state向量初始化为0。

2.内部循环遍历序列中的每个元素。执行forward方法进行正向传递,该方法返回pred和context_state,将用于下一个时间步。然后计算均方误差(MSE)用于预测连续值。执行backward()方法计算梯度,然后更新权重w1和w2。每次迭代中调用zero_()方法清除梯度,否则梯度将会累计起来。最后将context_state向量包装放到新变量中,以将其与历史值分离开来。

图片描述

训练期间产生的输出显示了每个epoch的损失是如何减少的,这是一个好的衡量方式。损失的逐渐减少则意味着我们的模型正在学习。

图片描述

预测

一旦模型训练完毕,我们就可以进行预测。在序列的每一步我们只为模型提供一个数据,并要求模型在下一个步预测一个值。

图片描述

预测结果如下图所示:黄色圆点表示预测值,蓝色圆点表示实际值,二者基本吻合,因此模型的预测效果非常好。

图片描述

结论

在这里,我们使用了Pytorch从零开始构建一个基本的RNNs模型,并且学习了如何将RNNs应用于简单的序列预测问题。

原文链接

干货好文,请关注扫描以下二维码:
图片描述

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

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

相关文章

Flowable工作流总结_工作规范流程设计思路

工作规范工作流场景,一般是甲方发起,乙方宣导学习。 文章目录一、工作规范流程图绘制元素二、流程图展示三、工作规范流程图:四、流程说明五、知识补充六、问题思考?一、工作规范流程图绘制元素 绘制元素说明主键(ID)自定义,建议…

K8S精华问答 | CentOS下如何配置主机互信?

作为是Google开源的容器集群管理系。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。今天,我们就来看看关于k8s的精华问答吧。1Q: Kubernetes集群不能正…

专属微信二维码python制作_如何通过一行代码制作个人专属动态微信二维码?

各位同学好,今天又是一个晴空万里的周末,面对外面这么好的天气,不好好在家学习怎么对得起外面的这个天气。 在逛 Github 的时候,发现了一个好玩的二维码制作的库:https://github.com/sylnsfar/qrcode 。这个库的 star …

主板没有rgb接口怎么接灯_纯白信仰打造RGB主机,四件套提升100%性能-Thermaltake...

没有RGB就没有信仰是当代主机的普遍看法,为了满足用户的需求,不论是主板还是显卡亦或者机箱本身,支持ARGB灯光同步的产品向来最受欢迎。以这个需求出发,一期机箱改造计划就这样开始了。主板、CPU散热不用说不带RGB的都找不到&…

希望我在开始第一个机器学习项目之前就了解的那些事儿

摘要: 一份机器学习过来人的经验清单分享,主要是包含一些关于构建机器学习工作流以及Apache Spark应该注意的一些事项,希望这个清单能够帮助那些正在学习机器学习的相关人员少走一些弯路,节约一些时间。当我们学习任何一个新的内容…

ftp上传文件服务器报550错误_java ftp下载文件,Java 实现ftp上传下载文件

最近项目中需要实现将文件先存放到ftp上,需要的时候再从ftp上下载,做的过程中碰到了问题,发现中文文件名的无法上传到ftp上,ftp上的中文文件名的文件下载不下来,几番折腾,终于搞定了,记录一下备…

揭秘!谷歌云确立领先地位的五大变革

戳蓝字“CSDN云计算”关注我们哦!作者 | Maribel Lopez编译作者 | 风车云马经过十多年的发展,云计算已经从即时容量和降低成本发展为支持创新的基础服务。在云计算的平台即服务(PaaS) 市场,可以应用机器学习和具有认知功能的各种开发工具。今…

MaxComputeSql性能调优

摘要: 转载自xiaorui 部分用户(尤其对外输出)使用MaxCompute(原Odps)时,由于对产品的使用层面和执行层面了解程度不同,导致提交的任务执行时间过长、占用了较多集群资源;严重的会导致失败、不仅需要投入支持同学精力协助解决、也影…

华为卡槽打不开怎么办_17500元!华为5G折叠手机刷屏,有人焦虑连夜开会…

本文经授权转载自澎湃新闻( ID:thepapernews )华为发布首款5G折叠屏手机Mate X,售价1.75万元。2月24日西班牙巴塞罗那华为发布了首款5G折叠屏手机—— 华为Mate X机身尺寸为8英寸不对称外翻折叠这款国产黑科技一出现立刻引发围观登上热搜那它究竟有啥特别的&#xf…

MaxCompute访问TableStore(OTS) 数据

摘要: MaxCompute作为阿里云大数据平台的核心计算组件,承担了集团内外大部分的分布式计算需求。 免费开通大数据服务:https://www.aliyun.com/product/odps 前言 MaxCompute作为阿里云大数据平台的核心计算组件,承担了集团内外大部…

编程吸金榜:你排第几?网友神回应了 !

作为全球知名招聘求职网站Indeed,最近发布了2019年度最佳工作榜单,公布了2019年的最佳行业领域及工作岗位薪酬,在全行业的榜单中,跟程序员相关的岗位有9个!对此,大家纷纷留言表示程序员或成最大赢家&#x…

快速开发工作流_02_集成在线流程设计器

接上一篇:快速开发工作流_01_简单流程案例https://gblfy.blog.csdn.net/article/details/102881983 文章目录七、流程设计器 modeler7.1. 导入war7.2. 重写两个配置类7.3. 添加国际化文件7.4. 资源文件配置7.5. 项目源码七、流程设计器 modeler 7.1. 导入war 解压…

electron 打包把node代理服务打包进去_专题:让C++给node做技术加持(三)编译electron本地模块踩坑记

欢迎来到我的专题文章:《让C给node做技术加持》系列。更多内容,持续更新中,欢迎关注。往期目录:专题:让C给node做技术加持(一)环境搭建,项目运行专题:让C给node做技术加持(二)-NodeJs调用C方法上…

云无边界,阿里云混合云数据同步发布

摘要: 针对不同数据库间数据实时同步难的问题,日前,阿里云宣布推出混合云数据同步一站式解决方案,便于广大云产品用户实现实时数据同步的混合云支持,更为方便的是,该功能让本地Oracle也能实现与云上数据库的…

fs react 使用 保存文件_入门TypeScript编写React

使用 create-react-app 开启 TypeScriptCreate React App 是一个官方支持的创建 React 单页应用程序的CLI,它提供了一个零配置的现代构建设置。当你使用 Create React App 来创建一个新的 TypeScript React 工程时,你可以运行:$ npx create-r…

快速开发工作流_03_集成在线流程设计器_内置用户免登录

接上一篇:快速开发工作流_02_集成在线流程设计器 https://gblfy.blog.csdn.net/article/details/103676784 文章目录八、内置用户免登录8.1. 定位url-config.js8.2. 替换url8.3. 添加配置类AdminRemoteAccountResource8.4. 启动类排除权限校验8.5. 码云地址八、内置…

强推!阿里数据科学家一次讲透数据中台

戳蓝字“CSDN云计算”关注我们哦!来源 | 技术领导力社区编辑 | Emma阿里大数据和人工智能科学家 行在,阿里公共数据平台负责人 罗金鹏,在云栖大会、Data Tech等大会中分享到:阿里的“双中台ET”数字化转型方法论及成果&#xff0c…

关于增强学习你应该了解的五件事儿

摘要: 本文主要是讲解了机器学习中的增强学习方法的基本原理,常用算法及应用场景,最后给出了学习资源,对于初学者而言可以将其作为入门指南。 强化学习(Reinforcement Learning)是当前最热门的研究课题之一…

SpringBoot聚合项目总结

文章目录一、聚合项目架构二、依赖传递图解2.1. 常见场景2.2. 企业场景三、结构设计原则3.1. 模块层次清晰3.2. 模块之间耦合度低3.3. 功能互不影响3.4. 定位问题效率高3.5. 灵活易扩展四、架构设计优点4.1. 统一规范4.2. 版本统一管理4.2.1. 模块版本统一管理4.2.2. 依赖版本统…

容器精华问答 | 虚拟机和容器的区别是什么?

戳蓝字“CSDN云计算”关注我们哦!云计算的发展日新月异,新技术层出不穷,尤其容器技术自2013年Docker容器问世以来一路高歌猛进红遍大江南北,与虚拟机相比,容器更显优势,有着更轻量、更快捷、占用资源更少&a…