数据与执行8种可能手势的前臂运动记录有关,我有一个加速度计(x,y,z),陀螺仪(x,y,z)和方向四元数。 我正在准备使用Keras中的LSTM模型对数据进行分类和预测。我的疑问是当X_Train进行成批组织时如何正确格式化y_train。
数据由10个特征(加速度,陀螺仪,四元数),71850个样本和9个类(一个是非手势和8个手势)组成。 每个手势都有一个75个样本的时间步窗,即1.25s。
我的问题是如何使y_train匹配X_train。 在以下代码中, sf 的形状为(71850,10)和 gest (71850,1)。我将 sf 转换为形状(958、75、10)(批次,时间步长,特征)的X_train。 我开始使用形状为(71850,9)的一键编码矢量构建y_train。这就是我被困的地方。如何格式化y_train,最后将其传递给LSTM模型?我了解的必须是(958,9) 这是否意味着我只需要每75个步骤提取一次one_hot_encoding向量?
sf, gest = readFileAndReturnData(0)
print(sf.shape, gest.shape)
num_classes = 9
y = keras.utils.to_categorical(gest, num_classes)
print(y.shape)
samples = list()
length = 75
n = sf.shape[0]
print('division:', n / length)
print('total samples', sf.shape[0])
print('sample error', sf.shape[0] % length)
# step over the size of data in jumps of 75
for i in range(0, n, length):
# grab from i to i + length
sample = sf[i:i + length]
samples.append(sample)
print('minibatch samples:', len(samples))
# convert list of arrays into 2d array
X_train = np.array(samples)
print(X_train.shape)
'''
(71850, 10) (71850, 1)
(71850, 9)
total samples 71850
sample error 0
minibatch samples: 958
(958, 75, 10)
'''
答案 0 :(得分:0)
所以基本上,如果您的问题与LSTM体系结构的输出形状有关,则它可以是2D或3D数组,具体取决于您在 model.add (如果是keras)功能。
如果return_sequence = False,则它是一个二维数组,显示(batch_size,units)在您的情况下为(958,9)
但是如果您希望在完成每个手势之后获取输出,则必须设置return_sequence = True,在这种情况下,输出将为(batch_size,each_gesture_completing_time_step,units),因此类似于(958,75 ,9)
希望有帮助!