版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
使用加速度計等智能手機(jī)傳感器進(jìn)行人類活動識別是研究的熱門話題之一。HAR是時間序列分類問題之一。在這個項目中,已經(jīng)制定了各種機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型,以獲得最佳的最終結(jié)果。同樣,我們可以使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的LSTM(長短期記憶)模型來識別人類的各種活動,例如站立、爬上樓和下樓等。LSTM模型是一種循環(huán)神經(jīng)網(wǎng)絡(luò)
,能夠?qū)W習(xí)序列預(yù)測問題中的順序依賴性。使用該模型是因為這有助于記住任意時間間隔內(nèi)的值。
人類活動識別數(shù)據(jù)集可以從下面給出的鏈接下載:HAR數(shù)據(jù)集
活動:
步行樓上樓下坐著常設(shè)加速度計以矢量形式檢測適當(dāng)加速度的大小和方向,并可用于感測方向(因為重量的方向發(fā)生變化)。根據(jù)角動量守恒,陀螺儀沿軸保持方向,以便方向不受安裝傾斜或旋轉(zhuǎn)的影響。
了解數(shù)據(jù)集:
兩個傳感器都會隨著時間的推移在3D空間中生成數(shù)據(jù)。
(“XYZ”表示X、Y和Z方向的3軸信號。)可用的數(shù)據(jù)通過應(yīng)用噪聲濾波器進(jìn)行預(yù)處理,然后在固定寬度的窗口中采樣,即每個窗口有128個讀數(shù)。訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)分開,
80%志愿者的讀數(shù)作為訓(xùn)練數(shù)據(jù),其余20%志愿者的記錄作為測試數(shù)據(jù)。所有數(shù)據(jù)都存在于使用上面提供的鏈接下載的文件夾中。
階段
選擇數(shù)據(jù)集
上傳驅(qū)動器中的數(shù)據(jù)集以在GoogleColaboratory上工作數(shù)據(jù)集清理和數(shù)據(jù)預(yù)處理選擇模型并構(gòu)建深度學(xué)習(xí)網(wǎng)絡(luò)模型在AndroidStudio中導(dǎo)出。該項目使用的IDE是GoogleColaboratory,它是處理深度學(xué)習(xí)項目的時代最好的IDE。上面已將階段1解釋為數(shù)據(jù)集的下載位置。按照這個順序開始項目,首先在GoogleColaboratory中打開一個新筆記本,導(dǎo)入所有必要的庫。
代碼:導(dǎo)入庫
Python3importpandasaspdimportnumpyasnpimportpickleimportmatplotlib.pyplotaspltfromscipyimportstatsimporttensorflowastfimportseabornassnsfromsklearnimportmetricsfromsklearn.model_selectionimporttrain_test_split
%matplotlibinline第2階段:
上傳筆記本中的數(shù)據(jù)集,在此之前我們需要將筆記本安裝到驅(qū)??動器上,以便該筆記本保存在我們的驅(qū)動器上并在需要時檢索。
Python3sns.set(style="whitegrid",palette="muted",font_scale=1.5)RANDOM_SEED=42
fromgoogle.colabimportdrivedrive.mount('/content/drive')輸出:
您將看到類似于下面屏幕截圖所示的彈出窗口,打開鏈接并復(fù)制授權(quán)碼并將其粘貼到授權(quán)碼欄中,然后輸入將安裝驅(qū)動器。
代碼:上傳數(shù)據(jù)集
Python3fromgoogle.colabimportfilesuploaded=files.upload()現(xiàn)在進(jìn)入模型構(gòu)建和訓(xùn)練階段,我們需要尋找不同的模型來幫助構(gòu)建更準(zhǔn)確的模型。這里選擇循環(huán)神經(jīng)網(wǎng)絡(luò)的LSTM模型。下圖顯示了數(shù)據(jù)的外觀。
第三階段:
從數(shù)據(jù)預(yù)處理開始。這個階段大約90%的時間都消耗在實際的數(shù)據(jù)科學(xué)項目中。在這里,原始數(shù)據(jù)被獲取并轉(zhuǎn)換為一些有用且高效的格式。
代碼:進(jìn)行數(shù)據(jù)變換,對數(shù)據(jù)進(jìn)行歸一化
Python3#transformingshapereshaped_segments=np.asarray(
segments,dtype=np.float32).reshape(
-1,N_time_steps,N_features)
reshaped_segments.shape代碼:分割數(shù)據(jù)集
Python3X_train,X_test,Y_train,Y_test=train_test_split(
reshaped_segments,labels,test_size=0.2,
random_state=RANDOM_SEED)測試大小取20%,即總記錄中20%的記錄用于測試準(zhǔn)確性,而其余記錄用于訓(xùn)練模型。
類別數(shù)=6(步行、坐、站立、跑步、上樓和下樓)
第4階段:在此階段選擇的模型是RNN的LSTM模型。
代碼:模型構(gòu)建
Python3defcreate_LSTM_model(inputs):
W={
'hidden':tf.Variable(tf.random_normal([N_features,N_hidden_units])),
'output':tf.Variable(tf.random_normal([N_hidden_units,N_classes]))
}
biases={
'hidden':tf.Variable(tf.random_normal([N_hidden_units],mean=0.1)),
'output':tf.Variable(tf.random_normal([N_classes]))
}
X=tf.transpose(inputs,[1,0,2])
X=tf.reshape(X,[-1,N_features])
hidden=tf.nn.relu(tf.matmul(X,W['hidden'])+biases['hidden'])
hidden=tf.split(hidden,N_time_steps,0)
lstm_layers=[tf.contrib.rnn.BasicLSTMCell(
N_hidden_units,forget_bias=1.0)for_inrange(2)]
lstm_layers=tf.contrib.rnn.MultiRNNCell(lstm_layers)
outputs,_=tf.contrib.rnn.static_rnn(lstm_layers,
hidden,dtype=tf.float32)
lstm_last_output=outputs[-1]
returntf.matmul(lstm_last_output,W['output'])+biases['output']代碼:使用AdamOptimizer執(zhí)行優(yōu)化來修改變量的損失值,以提高準(zhǔn)確性并減少損失。
Python3L2_LOSS=0.0015l2=L2_LOSS*\
sum(tf.nn.l2_loss(tf_var)fortf_varintf.trainable_variables())loss=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(
logits=pred_y,labels=Y))+l2
Learning_rate=0.0025optimizer=tf.train.AdamOptimizer(learning_rate=Learning_rate).minimize(loss)correct_pred=tf.equal(tf.argmax(pred_softmax,1),tf.argmax(Y,1))accuracy=tf.reduce_mean(tf.cast(correct_pred,dtype=tf.float32))代碼:執(zhí)行50次模型訓(xùn)練迭代以獲得最高的準(zhǔn)確率并減少損失
Python3#epochsisnumberofiterationsperformedinmodeltraining.N_epochs=50
batch_size=1024
saver=tf.train.Saver()history=dict(train_loss=[],train_acc=[],test_loss=[],test_acc=[])sess=tf.InteractiveSession()sess.run(tf.global_variables_initializer())train_count=len(X_train)
foriinrange(1,N_epochs+1):
forstart,endinzip(range(0,train_count,batch_size),
range(batch_size,train_count+1,batch_size)):
sess.run(optimizer,feed_dict={X:X_train[start:end],
Y:Y_train[start:end]})
_,acc_train,loss_train=sess.run([pred_softmax,accuracy,loss],feed_dict={
X:X_train,Y:Y_train})
_,acc_test,loss_test=sess.run([pred_softmax,accuracy,loss],feed_dict={
X:X_test,Y:Y_test})
history['train_loss'].append(loss_train)
history['train_acc'].append(acc_train)
history['test_loss'].append(loss_test)
history['test_acc'].append(acc_test)
if(i!=1andi%10!=0):
print(f'epoch:{i}test_accuracy:{acc_test}loss:{loss_test}')predictions,acc_final,loss_final=sess.run([pred_softmax,accuracy,loss],
feed_dict={X:X_test,Y:Y_test})print()print(f'finalresults:accuracy:{acc_final}loss:{loss_final}')
輸出:
因此,使用這種方法,第50次迭代時準(zhǔn)確率幾乎達(dá)到1。這表明大多數(shù)標(biāo)簽都可以通過這種方法清楚地識別。為了獲得正確識別的活動的準(zhǔn)確計數(shù),創(chuàng)建了混淆矩陣。
代碼:準(zhǔn)確度圖
Python3plt.figure(figsize=(12,8))
plt.plot(np.array(history['train_loss']),"r--",label="Trainloss")plt.plot(np.array(history['train_acc']),"g--",label="Trainaccuracy")
plt.plot(np.array(history['test_loss']),"r--",label="Testloss")plt.plot(np.array(history['test_acc']),"g--",label="Testaccuracy")
plt.title("Trainingsession'sprogressoveriteration")plt.legend(loc='upperright',shadow=True)plt.ylabel('TrainingProgress(LossorAccuracyvalues)')plt.xlabel('TrainingEpoch')plt.ylim(0)
plt.show()
混淆矩陣:混淆矩陣不亞于二維矩陣,它有助于計算正確識別的活動的精確計數(shù)。換句話說,它描述了分類模型在測試數(shù)據(jù)集上的性能。
代碼:混淆矩陣
Python3max_test=np.argmax(Y_test,axis=1)max_predictions=np.argmax(predictions,axis=1)confusion_matrix=metrics.confusion_matrix(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 足球獎學(xué)金合同(2篇)
- 雨水收集池施工合同(2篇)
- 幼兒斑馬 課件
- 第13課《唐詩五首·錢塘湖春行》八年級語文上冊精講同步課堂(統(tǒng)編版)
- 堅定跟黨走課件
- 黨課 制作課件
- 西京學(xué)院《自動控制原理實驗》2022-2023學(xué)年期末試卷
- 西京學(xué)院《外貿(mào)函電》2021-2022學(xué)年期末試卷
- 4種高逼格的動畫封面模板
- 部編版語文三年級上冊第五單元基礎(chǔ)知識復(fù)習(xí)卷含答案
- 4.1數(shù)列的概念(第2課時)-高中數(shù)學(xué)人教A版(2019)選擇性必修第二冊
- 英文科技論文寫作的100個常見錯誤
- 新湘科版小學(xué)三年級科學(xué)上冊-全冊教案
- 2023飛輪儲能技術(shù)在新能源一次調(diào)頻上的應(yīng)用
- 第7講-化學(xué)工程的倫理問題-201912092040097
- 激素類藥物使用規(guī)范
- 全面預(yù)算管理項目啟動培訓(xùn)課件PPT
- 北師大版2023-2024五年級數(shù)學(xué)上冊期中測試卷
- 第十六章-組織創(chuàng)新-管理學(xué)馬工程-課件
- 全球航路的開辟(共31張)
- 東方管理智慧儒道禪的視閾
評論
0/150
提交評論