keras LSTM 输入和输出形状如何工作?

时间:2021-04-20 01:21:02

标签: python keras lstm

        trainX, trainY, sequence_length=len(train), batch_size=batchTrain
    )
    val=timeseries_dataset_from_array(
        valX, valY, sequence_length=len(val), batch_size=batchVal
    )    
    test=timeseries_dataset_from_array(
        testX, testY, sequence_length=len(test), batch_size=batchTest
    )
    
    return train, val, test

train, val, test = preprocessor()

model=Sequential()
model.add(LSTM(4,return_sequences=True))
model.add(Dense(2,activation='softmax'))
model.compile(optimizer='Adam', loss="mae")
model.fit(train, epochs=200, verbose=2, validation_data=val, shuffle=False)

我正在尝试从时间序列数据中制作 LSTM,当我运行上面的代码时,损失根本没有改变。我肯定很难理解 lstm 输入/输出形状是如何工作的。我已经在网上阅读了尽可能多的内容,但我似乎无法让模型学习。我的印象是第一个参数是输出空间的维度。我希望 lstm 将整个序列返回给输出函数。

1 个答案:

答案 0 :(得分:1)

你的模型有很多问题。您的最后一层是密集的,有两个单元,您使用的是 softmax,它应该被 sigmoid 替换。由于您使用的是 softmax,我猜您是使用此模型进行分类而不是回归。

如果您将模型用于分类任务,那么您应该使用 BinaryCrossentropy 而不是 MeanAbsoluteError 作为损失。

要详细回答问题,您需要发布附加信息。例如:你是什么目标变量等