我想对数据的时间范围进行分类。例如,每5个输入,就有一个输出。但是我的代码拒绝接受我的输出。
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)错误:
ValueError: Error when checking target: expected dense_1 to have shape (5, 2) but got array with shape (31057, 2)它确实有31057个数据点,每个数据点由5个顺序数据组成。
发布于 2019-07-08 19:21:52
GRU层中的return_sequences参数指示模型在每个时间步返回状态,而不是最终激活。
如果在第二个GRU中将该标志设置为False,则模型将返回预期形状。提示:使用model.summary()来显示层的输出形状。
对于具有分类损失的模型,您希望输出层激活是softmax,而不是sigmoid。
https://stackoverflow.com/questions/56930609
复制相似问题