当前位置: > 财经>正文

Pytorch循环神经网络(RNN)快速入门与实战 基金股票如何入门操作视频讲解

2023-08-24 15:18:52 互联网 未知 财经

Pytorch循环神经网络(RNN)快速入门与实战

0. 前言

很久没用过Pytorch,忘得差不多了,最近课题需要用,所以整理一下RNN的使用方法。记得去年学这部分一直很迷糊,所以希望这篇博客能对大家有所帮助。

1. 简单循环神经网络结构

先简单聊聊RNN的结构。最简单的一层RNN网络结构如下图所示,其中,每个箭头都表示一个权值,输入为向量 X = [ x 1 , x 2 , . . . , x T ] X=[x_1,x_2,...,x_T] X=[x1​,x2​,...,xT​],输出向量为 Y = [ y 1 , y 2 , . . . , y T ] Y=[y1,y2,...,y_T] Y=[y1,y2,...,yT​],隐含层向量为 H = [ h 1 , h 2 , . . . , h T ] H=[h_1,h_2,...,h_T] H=[h1​,h2​,...,hT​],一层指的是有一层隐含层。 循环神经网络结构也可以表示成下面两图: 其实,这些图都是等价的。

那么循环神经网络的工作流程是怎么样的呢?一般循环神经网络的输入是时序数据,输出可以是由上述 y 1 y_1 y1​至 y n y_n yn​组成的向量,也可以是 y 1 y_1 y1​至 y n y_n yn​在连接一个线性层得到的一个数值。 比如,现在要用RNN做房价预测。如果目标是 输入今年1-6月的房价,输出是7-12月的房价,那可以直接将隐含层的输出作为网络输出。如果目标是 输入今年1-12月份的房价,输出是预测的明年1月的房价,那此时循环神经网络经过隐含层后,可以接入一个全连接层,也可以将最后时刻隐含层的输出作为网络输出,分别如下图(a)(b)所示。 另外,上述都只有一层隐含层,也可以根据具体需求设计多层,一般层数取2-10。 所以,网络的输出取哪部分,结构是什么都要看自己怎么设计。模型参数训练的数学推导在此不做证明。

2.Pytorch中RNN Layer的使用 2.1 RNN模块

Pytorch中RNN模块函数为torch.nn.RNN(input_size,hidden_size,num_layers,batch_first),每个参数的含义如下:

input_size:输入数据的编码维度,比如前面举例的房价预测,房价都是用一维的数直接表示的,所以此时input_size为1;如果输入的是字符编码,比如一个字符用3维编码表示,那么此时input_size为3;hidden_size:隐含层的维数,这个维数要么参考别人的结构设置,要么自行设置,比如可以设置成20;num_layers:隐含层的层数,也就是上面几幅图有几个h层,上面都是只有1层,所以 num_layers为1。batch_first:当 batch_first设置为True时,输入的参数顺序变为:x:[batch, seq_len, input_size],h0:[batch, num_layers, hidden_size]。 2.2 输入的表示

输入的表示形式,输入如下图所示,输入主要有向量 x x x、初始的 h 0 h_0 h0​, 其中x:[seq_len, batch, input_size],h0:[num_layers, batch, hidden_size],下面分别介绍每个参数的意义。

seq_len:输入的长度,即有多少个 x i x_i xi​,上述房价预测中,如果输入的是12个月的房价,那么seq_len就为12;batch:在训练神经网络时,可以多条数据同时训练,还是以房价预测为例,现在同时拿去年,今年共两年的数据训练网络,也就是将两年的数据batch在了一起,比如输入 x i x_i xi​是去年和今年第i月份的房价;一直以来我都不太明白这个 batch是什么意思,直到看了这几篇文章:参考1,参考2,参考3,想了解

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。