当前位置: 首页 > 图灵资讯 > 行业资讯> python中RNN和LSTM的基本介绍

python中RNN和LSTM的基本介绍

来源:图灵python
时间: 2024-09-09 10:10:07

1、RNN

简单的神经网络和卷积神经网络都有一个主要特征,即它们没有记忆能力,也就是说,它们分别处理每个输入,而不是前后输入之间的关系。例如,您需要处理数据点或时序,您需要同时向网络显示整个时序,即将时序转换为单个数据点输入。该输入网络称为前向神经网络(feddforwardnetwork)。

为了使这个过程更容易理解,我们使用简单的循环逻辑来实现RNN的前向传播。

#实现Numpy的简单RNN
importnumpyasnp
timesteps=100
input_feature=32
output_fearture=64
inputs=np.random.random((timesteps,input_feature))#生成100,32形状的矩阵
print(inputs)
state_t=np.zeros((output_fearture,))#生成64个全为0的数字
print(state_t)
w=np.random.random((output_fearture,input_feature))
u=np.random.random((output_fearture,output_fearture))
b=np.random.random((output_fearture,))
successive_outputs=[]
forinput_tininputs:
output_t=np.tanh(np.dot(w,input_t)+np.dot(u,state_t)+b)#np.dot表示数组点积
successive_outputs.append(output_t)
state_t=output_t
final_output_sequence=np.stack(successive_outputs,axis=0)
print(final_output_sequence)

2、LSTM

理论上,RNN应该能够记住过去看到的信息,但事实上,它不可能学习长期存在的信息,主要是由于梯度的消失。因此,研究人员设计了LSTM(longshort-termmemory),也就是所谓的长短记忆。

与RNN相比,LSTM具有跨域多时间步法(细胞状态C),类似于传送带。它的运行方向与您处理的序列方向平行,序列中的信息可以随时跳转到传送带上,然后通过传送带发送到更远的时间步骤。如有必要,它可以完整地跳回。这就是LSTM的原理。

以上是python中RNN和LSTM的基本介绍,希望对大家有所帮助!