我想预测多变量时间序列的未来值。我使用此代码作为模板,但将输出激活修改为线性
https://gist.github.com/karpathy/587454dc0146a6ae21fc
输入数据是双值的8维向量序列。输出在输入序列之前一个时间段是相同的8维向量。这是选择线性激活的原因。
model = Sequential()
model.add(LSTM(512, input_dim=len(chars),return_sequences=True)) #minesh witout specifying the input_length
model.add(LSTM(512, return_sequences=True)) #- original
model.add(Dropout(0.2))
model.add(TimeDistributed(Dense(len(chars))))
model.add(Activation('linear'))
model.compile(loss='mean_squared_error', optimizer='rmsprop')
我是Keras和RNN的新手。有人可以证实这个设计吗?
答案 0 :(得分:2)
每个样本中都有8x2输入,对于这8个时间步中的每一个,您编码512个要跟踪的功能。然后,512个值...参数的数量必须是巨大的?我希望你在模式中有足够的数据和多样性来使用大量的参数,否则你会过度配备。
我还希望你像LSTM一样使用dropout:
model.add(LSTM(512, return_sequences=True, dropout_W = 0.2)) #- original
还有dropout_U功能,但我不会使用那个。 LSTM有多个门,你应该知道,每个门都是密集的层,所以你可以选择你想要应用哪个门辍学。最佳做法是将其应用于输入门(dropout_W),而不是应用于循环门(dropout_U)。
否则整体架构是有道理的。