您好,登錄后才能下訂單哦!
python中RNN和LSTM有什么不同?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
1、簡單易用,與C/C++、Java、C# 等傳統語言相比,Python對代碼格式的要求沒有那么嚴格;2、Python屬于開源的,所有人都可以看到源代碼,并且可以被移植在許多平臺上使用;3、Python面向對象,能夠支持面向過程編程,也支持面向對象編程;4、Python是一種解釋性語言,Python寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序;5、Python功能強大,擁有的模塊眾多,基本能夠實現所有的常見功能。
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有什么不同的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。