为了小论文之跟着李沐学AI(十九)

GRU

原理说白了就是,控制,什么时候当前信息比较重要而历史信息不重要,什么时候当前信息不重要历史信息不重要,LSTM GRU都是这么一个套路,没什么好说的

GRU中有两个门,重置门和更新门。说是门,那是比较硬的说法, 本质上他们是一个(0-1)的向量,十用的是sigmod函数,是比较软的

在这里插入图片描述
其实说来说去还是对隐藏状态动手脚
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这四个公式写出来就完事了具体怎么写

def gru(inputs, state, params):
    W_xz, W_hz, b_z, W_xr, W_hr, b_r, W_xh, W_hh, b_h, W_hq, b_q = params
    H, = state
    outputs = []
    for X in inputs:
        Z = torch.sigmoid((X @ W_xz) + (H @ W_hz) + b_z)  # 更新门
        R = torch.sigmoid((X @ W_xr) + (H @ W_hr) + b_r)  # 重置门
        H_tilda = torch.tanh((X @ W_xh) + ((R * H) @ W_hh) + b_h) #候选隐藏状态
        H = Z * H + (1 - Z) * H_tilda
        Y = H @ W_hq + b_q
        outputs.append(Y)
    return torch.cat(outputs, dim=0), (H,)

从0开始实现,就是上面公式的重写而已,只不过手写的RNN我们把输出层也给加上去了

LSTM原理差不多,只不过门不同而已,实际上效果也是一样的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值