设置LSTM建模的Keras选项



我正在尝试设置预测某个值的过程。目前,我无法理解以下代码中的问题:

        in_neurons = 1
        out_neurons = 1
        hidden_neurons = 20
        nb_features = 9
        # retrieve data
        y_train = train.pop(target).values
        X_train = pd.concat([train[['QTR_HR_START', 'QTR_HR_END', 'HOLIDAY_RANK_', 'SPECIAL_EVENT_RANK_',
                                    'IS_AM', 'IS_TOP_RANKED', 'AWARDS_WINS_ANY', 'YEARS_SINCE_RELEASE']],
                             pd.DataFrame({'DATETIME': pd.DatetimeIndex(train['DATETIME']).astype(np.int64)})])
        X_train = X_train.values
        y_test = test.pop(target).values
        X_test = pd.concat([test[['QTR_HR_START', 'QTR_HR_END', 'HOLIDAY_RANK_', 'SPECIAL_EVENT_RANK_',
                                    'IS_AM', 'IS_TOP_RANKED', 'AWARDS_WINS_ANY', 'YEARS_SINCE_RELEASE']],
             pd.DataFrame({'DATETIME': pd.DatetimeIndex(test['DATETIME']).astype(np.int64)})])
        X_test = X_test.values
        model = Sequential()
        model.add(TimeDistributed(Dense(8, input_shape=(X_train.shape[0], 100, nb_features), activation='softmax')))
        model.add(LSTM(4, dropout_W=0.2, dropout_U=0.2))
        model.add(Dense(1))
        model.add(Activation("sigmoid"))
        model.compile(loss="mean_squared_error", optimizer="rmsprop", metrics=['accuracy'])

运行代码后,我得到了一个异常:

引发异常("序列模型中的第一层必须"异常:Sequential模型中的第一层必须获得input_shapebatch_input_shape参数。

请告诉我哪里错了

第1版:我刚刚配置了官方文档中提到的模型-http://keras.io/layers/recurrent/

model.add(LSTM(32, input_dim=nb_features, input_length=100))
model.compile(loss="mean_squared_error", optimizer="rmsprop", metrics=['accuracy'])

异常:检查模型输入时出错:预期lstm_input_1具有3个维度,但得到形状为(48614,9)的数组

它很旧,但我发布是为了将来使用。Keras作为输入需要3D数据,如错误所述。它是样本、时间步长和特征。尽管你有(48614,9)Keras将其视为2D-[样本,特征]。为了修复它,做一些类似的事情

def reshape_dataset(train):
    trainX = numpy.reshape(train, (train.shape[0], 1, train.shape[1]))
    return numpy.array(trainX)
x = reshape_dataset(your_dataset_48614, 9)

现在X应该是48614,1, 9,它是[样本、时间步长、特征]-3D

相关内容

  • 没有找到相关文章

最新更新