Keras LSTM:如何训练具有多个输入的模型

时间:2019-07-07 12:03:44

标签: python keras lstm

我是机器学习的新手。最近,我试图使用历史价格数据和情感价值来训练LSTM模型,以预测未来的比特币价格。我搜索了许多LSTM示例,但它们仅使用价格来预测价格。

由于我假设时间(t)的价格将受到之前51小时价格的影响,所以我编写了一个def并根据每小时的比特币收盘价来训练模型:

def create_dataset(dataset, look_back):
    dataX, dataY = [], []
    for i in range(len(dataset) - look_back):
        a = dataset[i:(i + look_back), 0]
        dataX.append(a)
        dataY.append(dataset[i + look_back, 0])
    print(len(dataY))
    return np.array(dataX), np.array(dataY)

look_back = 51
trainX, trainY = create_dataset(train, look_back=look_back)
testX, testY = create_dataset(test, look_back=look_back)

#Reshape X for model training
trainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
testX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))


model = Sequential()
model.add(LSTM(128, input_shape=(trainX.shape[1], trainX.shape[2])))
model.add(Dense(1))
model.compile(loss='mae', optimizer='adam')
history = model.fit(trainX, trainY, epochs=300, batch_size=100, validation_data=(testX, testY), verbose=0, shuffle=False)

但是,我不知道如何在模型中添加一个以上的属性(情感)。 出于情感考虑,我使用的API会给我五个分数,每个分数代表一种特定情感的价值。我的第一个想法是将价格表和情感表组合成一个向量,并将其作为输入。但是由于价格和情绪是两回事,所以我不确定这是否合理。还是应该再增加一层:model.add (sentiment)?但是,如果这样做,它将有2个trainX。

   Average_Anger    Average_Joy Average_Sadness Average_Fear    Average_Disgust
990 0.015561    0.017274    0.011605    0.014695    0.013854
989 0.015959    0.017144    0.011845    0.014390    0.013856
988 0.015181    0.017887    0.011130    0.013382    0.012693
987 0.014130    0.018764    0.009678    0.011879    0.011242

0 个答案:

没有答案