循环神经网络

Posted xiaochouk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环神经网络相关的知识,希望对你有一定的参考价值。

循环神经网络的简单实现:

import tensorflow as tf
x=[1,2]
state=[0.0,0.0]
w_cell_state=np.array([[0.1,0.2],[0.3,0.4]])
w_cell_input=np.array([0.5,0.6])
b_cell=np.array([0.1,-0.1])
w_output=np.array([1.0,2.0])
b_output=0.1
for i in range(len(x)):
    before_a=np.dot(state,w_cell_state)+x[i]*w_cell_input+b_cell
    state=np.tanh(before_a)
    final_out=np.dot(state,w_output)+b_output
    print(before_a)
    print(state:, state)
    print(final_out:, final_out)
    

与单一tanh循环体结构不同,LSTM是一个拥有三个门结构的特殊网络结构。

LSTM靠一些门结构让信息有选择性的影响循环神经网络中每个时刻的状态,所谓的门结构就是一个使用sigmoid神经网络和一个按位做乘法的操作,这两个操作合在一起就是一个门结构。之所以该结构叫门是因为使用sigmoid作为激活函数的全连接神经网络层会

输出一个0到1之间的数值,描述当前输入有多少信息量可以通过这个结构。LSTM单元结构示意图如下所示:

技术分享图片

为了使循环神经网络更有效的保存长期记忆,遗忘门和输入门是LSTM核心,遗忘门的作用是让神经网络忘记之前没有用的信息,遗忘门会根据当前的输入xt、上一时刻状态ct-1和上一时刻输出ht-1共同决定哪一部分记忆需要被遗忘。

 

以上是关于循环神经网络的主要内容,如果未能解决你的问题,请参考以下文章

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

AVKit – 视频片段仅循环 2 次

如何使用事件侦听器来加载动画片段的循环

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装