数据与前臂运动记录有关,执行8种可能的手势,我有一个加速度计(x,y,z),陀螺仪(x,y,z)和方位四元数。我正在准备使用Keras中的LSTM模型对这些数据进行分类和预测。我的疑问是,当y_train被组织成批时,如何正确地格式化X_Train。
数据由10个特征(加速度、陀螺仪、四元数)、71850个样本和9个类别(1个非手势,8个手势)组成。每个手势都有一个时间步长窗口,为75个样本,即1.25s。
我的问题是如何使y_train与X_train相匹配。在下面的代码中,sf的形状为(71850,10),gest (71850,1)。我将sf转换为X_train (958、75、10) (批处理、时间步长、特性)。我开始使用一个具有形状(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)
'''发布于 2019-05-21 12:19:33
因此,基本上,如果您的问题与LSTM体系结构的输出形状有关,那么它可以是一个二维或三维数组,这取决于您在model.add(如果是keras)函数中给出的返回序列参数。
如果return_sequence = False,那么它是一个显示(batch_size,单位)的二维数组,在您的例子中,这个数组是(958,9)。
但是,如果您希望在每个手势完成后进行输出,则必须设置return_sequence = True,在这种情况下,输出将是(batch_size,each_gesture_completing_time_step,单位),因此它将类似于(958,75,9)
希望能帮上忙!
https://stackoverflow.com/questions/55983867
复制相似问题