用 tf.scan() 自主实现/改造 RNN cell (GRU/LSTM)

本文介绍了如何利用tensorflow的tf.scan()函数自主实现和改造RNN单元,如GRU,以适应特殊需求。通过一个实例展示了tf.scan()的工作原理,并提供了GRU单元的实现过程,强调了在处理输入维度时要注意转置操作。
摘要由CSDN通过智能技术生成

tensorflow RNN layer的搭建(GRU,LSTM等)中,我们展示了如何调用 tensorflow 内置模块和函数,搭建RNN layer。然而,当一般的GRU/LSTM layer不适用时,我们希望对其 cell 进行改进,实现自主设计的改造版的RNN cell。
这方面研究工作代表的典型有:Time-LSTM,论文链接为:What to Do Next: Modeling User Behaviors by Time-LSTM
下面,我们从tensorflow的内置函数 tf.scan()出发,展示如何自主实现/改造 RNN cell。

tf.scan()

tf.scan(
    fn,
    elems,
    initializer=None,
    parallel_iterations=10,
    back_prop=True,
    swap_memory=False,
    infer_shape=True,
    name=None
)

fn : 一个二元函数
elems:一个tensor list
initializer:一个tensor,作为初始化值
实际上,tf.scan()所能应用的类型不止如此,这里只举了我们所需要用到的部分
tf.scan 记录中有一个很好的例子,我们借鉴一下:

x = [1,2,3]
z = 10

x = tf.convert_to_tensor(x)
z = tf.convert_to_tensor(z)

def f(x,y):
    return x+y

g = tf.scan(fn=f,elems = x,initializer=z)

sess = tf.Session()
sess.</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值