基于tensorflow的RNN-LSTM(一)实现RNN

本文介绍了基于TensorFlow实现RNN的步骤,包括变量解释、数据处理、模型构建和训练过程。通过分析RNN网络结构,详细解释了变量如num_steps、batch_size、state_size的作用,并展示了数据处理方式,为后续的模型训练打下基础。文章以RNN的网络拓扑为结尾,提出了未来研究的方向,如不同数据表示方式的影响及优化算法对比。
摘要由CSDN通过智能技术生成

开始入门深度学习,在手推了RNN和LSTM的BP算法后(参考paper:Supervised Sequence Labelling with Recurrent Neural)。开始尝试用tensorflow实现RNN和LSTM以及基于其的一些衍生模型,在实现的过程中有一些思考和未解决的问题,在这里一并记录。

变量解释


本文的实现主要是依据这篇博客, 开篇作者便引入了五个变量:

num_steps = 5
batch_size = 200

num_classes = 2
state_size = 8
learning_rate = 0.1
num_epochs = 1

这里有必要先解释一下这些变量的含义,但是读者们大概率觉得枯燥,可以大致浏览下然后往下看,中途多次回顾即可。第一个变量num_steps,RNN循环的次数,由此可见深入理解这个变量对于理解代码所实现的RNN网络拓扑和RNN网络至关重要。第二个变量batch_size指的是批的大小,这个可以自己指定;num_classes是数字的类别,这里为2也即是0和1;state_size指隐藏层的神经元个数在图中是S内部的神经元数目;下一个是学习率,这个是应用于Adagrad算法的;最后一个是网络执行的次数。

先看原博客中给出的RNN结构图RNN结构图
这个图比较笼统,不易观察出batch_size、state_size等变量的对应关系,因此,我找到了第二张RNN结构图RNN经构图2
我对这两张图的理解是:第一张图的P和第二张中的y是输出层,所不同的是第一张把真正的输出y进行了softmax处理得到了P;第一张的S和第二张的h都是隐藏层,其中上图的每一个S对应的下图三个小h(这里的“三个”在代码中用变量state_size表示);上图的X和下图的x都是输入层。
到此为止都比较宏观,读者可以在阅读代码时想一想开篇这一节所说的概念。

数据处理


def gen_data(size=1000000):
    X = np.array(np.random.choice(2, size=(size, )))
    Y = []
    for i 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值