【LSTM分类】基于双向长短时记忆(BiLSTM)实现数据分类含Matlab源码
生活随笔
收集整理的這篇文章主要介紹了
【LSTM分类】基于双向长短时记忆(BiLSTM)实现数据分类含Matlab源码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?1 簡介
LSTM 是循環神經網絡中的一個特殊網絡,它能夠很好的處理序列信息并從中學習有效特征,它把以往的神經單元用一個記憶單元( memory cell) 來代替,解決了以往循環神經網絡在梯度反向傳播中遇到的爆炸和衰減問題. 一個記憶單元利用了輸入門 it、一個記憶細胞 ct、一個忘記門 ft、一個輸出門 ot 來控制歷史信息的儲存記憶,在每次輸入后會有一個當前狀態 ht,ht 計算如下:
其中,xt?為?t?時刻輸入的情感詞向量,σ?為?sigmoid?函數,?代表向量對應元素依次相乘,其中水電費?Wi,Ui,Vi,bi,?Wg,Ug,bg,Wo,Uo,Vo,bo?為?LSTM?參數.
2 部分代碼
%加載序列數據%數據描述:總共270組訓練樣本共分為9類,每組訓練樣本的訓練樣個數不等,每個訓練訓練樣本由12個特征向量組成,clcclear allclose all[XTrain,YTrain] = japaneseVowelsTrainData;%數據可視化figureplot(XTrain{1}')xlabel('Time Step')title('Training Observation 1')legend('Feature ' ,'Location','northeastoutside')%%%LSTM可以將分組后等量的訓練樣本進行訓練,從而提高訓練效率%如果每組的樣本數量不同,進行小批量拆分,則需要盡量保證分塊的訓練樣本數相同%首先找到每組樣本數和總的組數numObservations = numel(XTrain);for i=1:numObservations sequence = XTrain{i}; sequenceLengths(i) = size(sequence,2);end%繪圖前后排序的各組數據個數figuresubplot(1,2,1)bar(sequenceLengths)ylim([0 30])xlabel('Sequence')ylabel('Length')title('Sorted Data')%按序列長度對測試數據進行排序[sequenceLengths,idx] = sort(sequenceLengths);XTrain = XTrain(idx);YTrain = YTrain(idx);subplot(1,2,2)bar(sequenceLengths)ylim([0 30])xlabel('Sequence')ylabel('Length')title('Sorted Data')%%?3 仿真結果
4 參考文獻
[1]黃賢英, 劉廣峰, 劉小洋,等. 基于word2vec和雙向LSTM的情感分類深度模型[J]. 計算機應用研究, 2019, 36(12):6.?
博主簡介:擅長智能優化算法、神經網絡預測、信號處理、元胞自動機、圖像處理、路徑規劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。
部分理論引用網絡文獻,若有侵權聯系博主刪除。
總結
以上是生活随笔為你收集整理的【LSTM分类】基于双向长短时记忆(BiLSTM)实现数据分类含Matlab源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tkinter浏览器组件
- 下一篇: ppt to html c,PPTC参数