2017-03-05 328 views
3

我想对多元时间序列的未来值进行预测。我使用此代码作为模板,但将输出激活修改为线性用于预测Keras未来时间序列值的lstm

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。有人可以确认这种设计吗?

回答

2

您在每个样本中都有8x2输入,对于这8个时间步中的每一个,您都编码了512个要跟踪的功能。然后再次,512个值...参数的数量必须很大?我希望你有足够的数据和多样的模式来利用这么多的参数,否则你会过度使用。

我也avise您使用辍学的LSTM这样的:

model.add(LSTM(512, return_sequences=True, dropout_W = 0.2)) #- original 

还有一个特点dropout_U,但我不会用那一个。你应该知道,LSTM有多个门,每个门都是密集的层,所以你可以选择你想要应用哪个门。最佳做法是将其应用于输入门(dropout_W)而不是循环门(dropout_U)。

否则整体架构是有道理的。

+0

感谢您的建议。 – bhomass

相关问题