我想对数据的时间范围进行分类。例如,每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个连续数据。
答案 0 :(得分:0)
GRU层中的return_sequences
参数指示模型在每个时间步返回状态,而不是最终激活。
如果在第二个GRU中将该标志设置为False,则模型将返回您期望的形状。
提示:使用model.summary()
显示图层的输出形状。
对于具有类别损失的模型,您希望输出层激活是softmax而不是Sigmoid。