如何将 2 个特征传递给 LSTM,其中之一是用 Keras 进行热编码的?

数据挖掘 Python 喀拉斯 lstm rnn
2022-02-09 13:54:28

我有一个非常简单的 LSTM 模型

model = Sequential()
model.add(LSTM(64, input_shape=(seq_length, X_train.shape[2]) , return_sequences=True))
model.add(Dense(y_cat_train.shape[2], activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_cat_train, epochs=100, batch_size=10, verbose=2)

输入X_train有 2 个特征,一个是分类的(值 1-4),另一个是数字的(值 1-100)。我用 keras 对4 个类进行y_test了一次热编码to_categorical

  1. 我也应该对分类输入特征进行编码吗?如果我这样做,我怎样才能将它与其他功能一起传递?(例如,现在时间步长如下所示[1,44]:)
  2. 稍后,我想进行采样,这意味着我需要将预测y_hat<t-1>结果作为x<t>. 我将不得不同时传递第二个数字特征(1-100)。如何做呢 ?

编辑:请注意,我不希望我的数字特征变得分类,因为值很重要(意味着 2<10<90 等)

1个回答

(1) 是的,通过one-hot encoding对分类特征进行编码是一种常见的做法,例如,encode [1,44]as [1,0,0,0,44],encode [2,44]as[0,1,0,0,44]等。

(2) 同 (1),只是将 one-hot 编码的分类特征和数字特征连接起来。