首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Keras LSTM中获得多个timestep的一个输出?

如何在Keras LSTM中获得多个timestep的一个输出?
EN

Stack Overflow用户
提问于 2019-07-08 15:57:37
回答 1查看 22关注 0票数 0

我想对数据的时间范围进行分类。例如,每5个输入,就有一个输出。但是我的代码拒绝接受我的输出。

代码语言:javascript
复制
model = Sequential()
model.add(GRU(32, input_shape=(TimeStep.TIME_STEP + 1, 10), return_sequences=True, activation='relu'))
model.add(GRU(64, activation='relu', return_sequences=True))
model.add(Dense(2, activation='hard_sigmoid'))

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=[categorical_accuracy])
history = model.fit(TimeStep.fodder, TimeStep.target, epochs=50)

错误:

代码语言:javascript
复制
ValueError: Error when checking target: expected dense_1 to have shape (5, 2) but got array with shape (31057, 2)

它确实有31057个数据点,每个数据点由5个顺序数据组成。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-08 19:21:52

GRU层中的return_sequences参数指示模型在每个时间步返回状态,而不是最终激活。

如果在第二个GRU中将该标志设置为False,则模型将返回预期形状。提示:使用model.summary()来显示层的输出形状。

对于具有分类损失的模型,您希望输出层激活是softmax,而不是sigmoid。

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

https://stackoverflow.com/questions/56930609

复制
相关文章

相似问题

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