日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab LSTM序列分类的官方示例

發(fā)布時間:2023/12/10 循环神经网络 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab LSTM序列分类的官方示例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

matlab版本是2018b及其以上。

%% %加載序列數(shù)據(jù) %數(shù)據(jù)描述:總共270組訓(xùn)練樣本共分為9類,每組訓(xùn)練樣本的訓(xùn)練樣個數(shù)不等,每個訓(xùn)練訓(xùn)練樣本由12個特征向量組成, [XTrain,YTrain] = japaneseVowelsTrainData; %數(shù)據(jù)可視化 figure plot(XTrain{1}') xlabel("Time Step") title("Training Observation 1") legend("Feature " + string(1:12),'Location','northeastoutside') %% %LSTM可以將分組后等量的訓(xùn)練樣本進(jìn)行訓(xùn)練,從而提高訓(xùn)練效率 %如果每組的樣本數(shù)量不同,進(jìn)行小批量拆分,則需要盡量保證分塊的訓(xùn)練樣本數(shù)相同 %首先找到每組樣本數(shù)和總的組數(shù) numObservations = numel(XTrain); for i=1:numObservationssequence = XTrain{i};sequenceLengths(i) = size(sequence,2); end %繪圖前后排序的各組數(shù)據(jù)個數(shù) figure subplot(1,2,1) bar(sequenceLengths) ylim([0 30]) xlabel("Sequence") ylabel("Length") title("Sorted Data") %按序列長度對測試數(shù)據(jù)進(jìn)行排序 [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")%% %設(shè)置LSTM訓(xùn)練數(shù)據(jù)的小批量分組個數(shù) miniBatchSize = 27;%% %定義LSTM網(wǎng)絡(luò)架構(gòu): %將輸入大小指定為序列大小 12(輸入數(shù)據(jù)的維度) %指定具有 100 個隱含單元的雙向 LSTM 層,并輸出序列的最后一個元素。 %指定九個類,包含大小為 9 的全連接層,后跟 softmax 層和分類層。 inputSize = 12; numHiddenUnits = 100; numClasses = 9;layers = [ ...sequenceInputLayer(inputSize)bilstmLayer(numHiddenUnits,'OutputMode','last')fullyConnectedLayer(numClasses)softmaxLayerclassificationLayer]%% %指定訓(xùn)練選項: %求解器為 'adam' %梯度閾值為 1,最大輪數(shù)為 100。 % 27 作為小批量數(shù)。 %填充數(shù)據(jù)以使長度與最長序列相同,序列長度指定為 'longest'。 %數(shù)據(jù)保持按序列長度排序的狀態(tài),不打亂數(shù)據(jù)。 % 'ExecutionEnvironment' 指定為 'cpu',設(shè)定為'auto'表明使用GPU。maxEpochs = 100; miniBatchSize = 27;options = trainingOptions('adam', ...'ExecutionEnvironment','cpu', ...'GradientThreshold',1, ...'MaxEpochs',maxEpochs, ...'MiniBatchSize',miniBatchSize, ...'SequenceLength','longest', ...'Shuffle','never', ...'Verbose',0, ...'Plots','training-progress');%% %訓(xùn)練LSTM網(wǎng)絡(luò) net = trainNetwork(XTrain,YTrain,layers,options);%% %測試LSTM網(wǎng)絡(luò) %加載測試集 [XTest,YTest] = japaneseVowelsTestData;%由于LSTM已經(jīng)按照相似長度的小批量分組27,測試需要按照相同方式對數(shù)據(jù)進(jìn)行排序處理。 numObservationsTest = numel(XTest); for i=1:numObservationsTestsequence = XTest{i};sequenceLengthsTest(i) = size(sequence,2); end [sequenceLengthsTest,idx] = sort(sequenceLengthsTest); XTest = XTest(idx); YTest = YTest(idx);%使用classify進(jìn)行分類,指定小批量大小27,指定組內(nèi)數(shù)據(jù)按照最長的數(shù)據(jù)填充 miniBatchSize = 27; YPred = classify(net,XTest, ...'MiniBatchSize',miniBatchSize, ...'SequenceLength','longest'); %計算分類準(zhǔn)確度 acc = sum(YPred == YTest)./numel(YTest)

?

總結(jié)

以上是生活随笔為你收集整理的matlab LSTM序列分类的官方示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。