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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

读取肌电数据,构建模型训练数据

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 读取肌电数据,构建模型训练数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇為《信號處理》系列博客的第十一篇,該系列博客主要記錄信號處理相關知識的學習過程和自己的理解,方便以后查閱。

本片博客為用DNN分類肌電數據的準備工作的第二篇,主要內容為,讀取處理后的肌電數據(去噪、提取活動段),并構成訓練數據。

import os import csv import random import numpy as np import matplotlib.pyplot as plt from sklearn import preprocessingdef data_loader(datadir, batch_size=10):'''定義訓練集數據讀取器輸入參數:datadir :數據文件的保存路徑batch_size :每次用于訓練的數據量輸出參數:原始數據+標簽'''def reader():batch_sEMG = []# 定義變量,用于存儲肌電數據圖片batch_labels = []# 定義變量,用于存儲肌電數據標簽label = 0# 標簽變量sEMG = []# 存儲一個肌電數據# 讀取數據,用于訓練for root, dirs, files in os.walk(datadir):if len(root)==len(datadir):# 去除根目錄的文件路徑continuelabel = label+1# 每個子文件夾代表一個類別random.shuffle(files)# 訓練時隨機打亂肌電文件順序# 遍歷每一個文件,一個文件即為一張圖片for sEMG_files in files:# 讀取文件內容,并轉換為圖片with open(root+'/'+sEMG_files) as sEMG_file:# 獲取datadir文件夾下的,子文件夾內的,文件的,內容sEMG_signal = csv.reader(sEMG_file)for row in sEMG_signal:sEMG.append(row)# 對一次采集到的肌電信號進行歸一化,并改變矩陣的形狀sEMG = np.array(sEMG).astype('float32')min_max_scaler = preprocessing.MinMaxScaler()#默認為范圍0~1,拷貝操作sEMG_minmax = min_max_scaler.fit_transform(sEMG)sEMG_minmax = np.delete(sEMG_minmax, -1, axis=0)#刪除最后一行整行,這里matlab代碼沒有寫好,導致數據多了一行sEMG_img = sEMG_minmax.reshape(1, 200, 240)batch_sEMG.append(sEMG_img)batch_labels.append(label)sEMG = []# 變量清零,用于下一次循環if len(batch_sEMG) == batch_size:# 對一次采集到的肌電信號進行歸一化,并改變矩陣的形狀,這里改變形狀的代碼有錯# sEMG = np.array(batch_sEMG).astype('float32')# min_max_scaler = preprocessing.MinMaxScaler()#默認為范圍0~1,拷貝操作# sEMG_minmax = min_max_scaler.fit_transform(sEMG)# sEMG_minmax=np.delete(sEMG_minmax, -1, axis=0)#刪除整行# sEMG_array = sEMG_minmax.reshape(200, 240)# labels_array = np.array(batch_labels).astype('float32').reshape(-1, 1)sEMG_array = np.array(batch_sEMG).astype('float32')labels_array = np.array(batch_labels).astype('float32').reshape(-1, 1)yield sEMG_array, labels_arraybatch_sEMG = []# 變量清零,用于下一次循環batch_labels = []# 變量清零,用于下一次循環if len(batch_sEMG) > 0:# 剩余樣本數目不足一個batch_size的數據,一起打包成一個mini-batchsEMG_array = np.array(batch_sEMG).astype('float32')labels_array = np.array(batch_labels).astype('float32').reshape(-1, 1)yield sEMG_array, labels_arrayreturn reader# 查看數據形狀 DATADIR = '/home/al007/Deep Learing/PaddlePaddle/sEMG' train_loader = data_loader(DATADIR, batch_size=10) data_reader = train_loader() data = next(data_reader) print(data[0].shape, data[1].shape)

打印結果:

(10, 200, 240) (10, 1)

總結

以上是生活随笔為你收集整理的读取肌电数据,构建模型训练数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。