首页 > 其他 > 详细

RNN和LSTM

时间:2020-12-22 09:00:28      阅读:55      评论:0      收藏:0      [点我收藏+]

RNN:循环神经网络,用于处理序列信息,即有上下文关系的信息

RNN中会把上一层处理后的信息作为输入传入到下一层,这样,这一层

就会同时考虑此时的输入和上一个时刻的输入,做到处理序列信息。

技术分享图片

 

 

按时间线展开

技术分享图片

 

其中各个时间点具有同一个W,U,V,这也是RNN的权值共享。

RNN接受的输入的特征为(b,  n_features),时间序列为T。

初始输入为h0,一般初始化为zeros(b, hidden_unit),

W矩阵维度(hidden_unit, hidden_unit)

U矩阵维度(n_features, hidden_unit)

V矩阵维度(hidden_unit, output)

 

技术分享图片

 

def run_step_forward(x, prev_h, Wx, Wh, b):
    # x(N*D)  Wx(D*H)  pre_H(N*H)  Wh(H*H)  b(1*H)
    next_h = np.tanh(x.dot(Wx) + prev_h.dot(Wh) + b)  # N * H
    cache = (x, Wx, Wh, prev_h, next_h)

    return next_h, cache



def rnn_forward(x, h0, Wx, Wh, b):
    N, T, D = x.shape
    _, H = h0.shape
    h = np.zeros((N, T, H))
    cache = []
    h_interm = h0
    for i in range(T):
        h[:, i, :], cache_sub = run_step_forward(x[:, i, :], h_interm, Wx, Wh, b)
        h_interm = h[:, i, :]
        cache.append(cache_sub)

    return h, cache

 

 

 

LSTM:Long Short Term

 内容来自https://blog.csdn.net/v_JULY_v/article/details/89894058

LSTM的设计思路是按需遗忘或保留前文信息,为了满足这项要求,增加了细胞状态

技术分享图片

 LSTM有通过精心设计的称作为“门”的结构来去除或者增加信息到细胞状态的能力。

门是一种让信息选择式通过的方法。他们包含一个sigmoid神经网络层和一个pointwise乘法的非线性操作。

1. 遗忘门:

技术分享图片

 

 技术分享图片  

 

2. 输入门

 

 

 

 

 

 

 

技术分享图片

 

 

 

技术分享图片

技术分享图片

 

3. 更新胞元状态

技术分享图片

技术分享图片

 

 

 4. 输出门

技术分享图片

技术分享图片

最终LSTM的输出为

技术分享图片

 

RNN和LSTM

原文:https://www.cnblogs.com/learningcaiji/p/14158748.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!