关于RNN相关模型-tensorflow源码理解

本文主要是对tensorflow中lstm模型中的c,h进行解析。rnn_cell_impl.py

1.关于RNN模型

在rnn_cell_impl.py的tensorflow源码中,关于RNN部分实现的类主要是BasicRNNCell,
首先在build函数中,定义了两个变量_kernel和_bias。
这里写图片描述
其中_num_untis表示RNN cell 的untis数目。
所以在call函数中,hidden_state的更新如下所示:
这里写图片描述

从上面中可以看出,RNN首先将input与上一个state连接,然后与在build函数中定义的_kernal变量点乘,最后加上偏置项。

2. 关于LSTM模型

主要看BasicLSTMCell这个类,在build函数中,定义了两个参数_kernel与_bias
这里写图片描述
与RNN不同,参数_kernal与_bias的列都是_num_units的四倍,主要是因为后面要分成四个部分,分别为i,j,f,o。
因此,在call函数中,
这里写图片描述
在call函数中,i,j,f,o可以分别表示为:
这里写图片描述

所以,在上面的图中,最上面的横线表示C,最小面的横线表示h。

3. 关于GRU模型

在GRU模型中的build函数中,可以看到定义了四个参数:
这里写图片描述
因此,在call函数中,

这里写图片描述
从下面的图中可以看出,zt为u,r表示rt,
这里写图片描述

从tensorflow的源码来看,上面的公式中ht的求解有问题,所以参考维基百科,得到下面的公式:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一夜了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值