首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Keras中,当输出是使用LSTM的八个类之一时,y_train的正确格式是什么?

在Keras中,当输出是使用LSTM的八个类之一时,y_train的正确格式是什么?
EN

Stack Overflow用户
提问于 2019-05-04 15:09:17
回答 1查看 149关注 0票数 0

数据与前臂运动记录有关,执行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向量?

代码语言:javascript
复制
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)
'''
EN

回答 1

Stack Overflow用户

发布于 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)

希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55983867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档