Keras 如何在LSTM RNN中传递分类信息和数字特征

Keras 如何在LSTM RNN中传递分类信息和数字特征,keras,lstm,recurrent-neural-network,autoencoder,lstm-stateful,Keras,Lstm,Recurrent Neural Network,Autoencoder,Lstm Stateful,我有一个包含1000个用户的活动数据集。由于一个用户的活动不同于另一个用户,我希望用户属性也发送到LSTM RNN模型,以便模型能够更好地了解每个用户的行为。 我的数据集片段如下所示: inputs = Input(shape = (timesteps, n_features)) L1 = LSTM(encoding_dim, activation='relu', return_sequences=True, kernel_regularizer=regularizers.l

我有一个包含1000个用户的活动数据集。由于一个用户的活动不同于另一个用户,我希望用户属性也发送到LSTM RNN模型,以便模型能够更好地了解每个用户的行为。 我的数据集片段如下所示:

inputs = Input(shape = (timesteps, n_features))
L1 = LSTM(encoding_dim, activation='relu', return_sequences=True,
          kernel_regularizer=regularizers.l2(0.00))(inputs)
L2 = LSTM(hidden_dim, activation='relu', return_sequences=False)(L1)
L3 = RepeatVector(timesteps)(L2)
L4 = LSTM(hidden_dim, activation='relu', return_sequences=True)(L3)
L5 = LSTM(encoding_dim, activation='relu', return_sequences=True)(L4)
output = TimeDistributed(Dense(n_features))(L5)
lstm_model = Model(inputs=inputs, outputs=output)
lstm_model.summary()

我尝试了分类信息的一种热编码和二进制编码,但该模型没有产生好的结果。但将LSTM RNN模型应用于单个用户的数据(不包括用户变量)会产生良好的结果

我的lstm自动编码器异常检测模型片段如下:

inputs = Input(shape = (timesteps, n_features))
L1 = LSTM(encoding_dim, activation='relu', return_sequences=True,
          kernel_regularizer=regularizers.l2(0.00))(inputs)
L2 = LSTM(hidden_dim, activation='relu', return_sequences=False)(L1)
L3 = RepeatVector(timesteps)(L2)
L4 = LSTM(hidden_dim, activation='relu', return_sequences=True)(L3)
L5 = LSTM(encoding_dim, activation='relu', return_sequences=True)(L4)
output = TimeDistributed(Dense(n_features))(L5)
lstm_model = Model(inputs=inputs, outputs=output)
lstm_model.summary()
现在我试着

n_特征=22;特征数量[1(分类,一个热编码)+21(数字)]

编码_dim=16

隐藏尺寸=8


如何更好地处理分类属性,即使用此模型的用户变量?

我正在分享我的代码序列和测试都是分类

使用以下命令加载数据集: 列车尺寸=整数(长度(df)*(1-测试分割))

然后加载数据并使用以下方法对其进行训练: X_列,y_列,X_测试,y_测试=负载数据()

model = create_model(len(X_train[0]))

print ('Fitting model...')
hist = model.fit(X_train, y_train, batch_size=64, nb_epoch=10, validation_split = 
0.1, verbose = 1)

score, acc = model.evaluate(X_test, y_test, batch_size=1)
print('Test score:', score)