• 技术文章 >Python技术 >Python基础教程

    python中RNN和LSTM的基本介绍

    小妮浅浅小妮浅浅2021-02-21 15:44:35原创2356

    1、RNN

    简单的神经网络和卷积神经网络都有一个主要的特点,那就是都不具备记忆能力,也就是说,它们都是分别处理每一个输入,而不存在前、后两个输入之间的关系。例如,您需要处理数据点或时序,您需要同时向网络显示整个时序,也就是将时序转换为单一数据点输入。采用这种输入方式的网络叫做前向神经网络(feddforwardnetwork)。

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

    #简单的RNN实现Numpy实现
    import numpy as np
    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=[]
    for input_t in inputs:
        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的基本介绍,希望能对大家有所帮助!

    专题推荐:python rnn lstm
    上一篇:python中SQLAlchemy是什么? 下一篇:python包和模块的内容整理

    相关文章推荐

    • Python中sqlalchemy库如何使用?• python如何对多个迭代器连接?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网