python中RNN和LSTM的基本介紹
1、RNN
簡單的神經網絡和卷積神經網絡都有一個主要的特點,那就是都不具備記憶能力,也就是說,它們都是分別處理每一個輸入,而不存在前、后兩個輸入之間的關系。例如,您需要處理數據點或時序,您需要同時向網絡顯示整個時序,也就是將時序轉換為單一數據點輸入。采用這種輸入方式的網絡叫做前向神經網絡(feddforwardnetwork)。
為了使這個過程更加容易理解,我們用簡單的循環邏輯來實現一個RNN的前向傳播。
#簡單的RNN實現Numpy實現
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的基本介紹,希望能對大家有所幫助!更多Python學習教程請關注IT培訓機構:千鋒教育。