简介
本文基于LSTM来完成用户行为识别。数据集来源:https://archive.ics.uci.edu/ml/machine-learning-databases/00240/
此数据集一共有6种行为状态:
行走;
站立;
躺下;
坐下;
上楼;
下楼;
以上6种行为数据是通过传感器进行采集的。
.\data\UCI HAR Dataset\train\Inertial Signals
实现
本次实验实现的是6分类任务。
pip install -i https://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple tensorflow==1.13.1
import tensorflow as tf
import numpy as np
#
# 模型好坏主要由数据决定,数据决定模型上限,模型决定逼近这个上限,记录仪上的数据
def load_X(X_signals_paths):
X_signals = []
for signal_type_path in X_signals_paths:
file = open(signal_type_path, 'r')
X_signals.append(
[np.array(serie, dtype=np.float32) for serie in
[row.replace(' ', ' ').strip().split(' ') for row in file]])
file.close()
return np.transpose(np.array(X_signals), (1, 2, 0))
def load_y(y_path):
file = open(y_path, 'r')
y_ = np.array([elem for elem in [row.replace(' ', ' ').strip().split(' ') for row in file]], dtype=np.int32)
file.close()
return y_ - 1
class Config(object):
def __init__(self, X_train, X_test):
self.train_count = len(X_train) # 训练记录
self.test_data_count = len(X_test)
self.n_steps = len(X_train[0]) # 步长,128步
self.learning_rate = 0.0025
self.lambda_loss_amount = 0.0015 # 正则化惩罚粒度
self.training_epochs = 300
self.batch_size = 1500
self.n_inputs = len(X_train[0][0]) # 每个step收集9个,数据收集维度
self.n_hidden = 32 # 隐层神经元个数