如何在 LSTM 中选择 Dense 层的维数?

数据挖掘 机器学习 神经网络 深度学习 喀拉斯 lstm
2022-02-11 06:06:26

我有一个多标签文本分类的任务。我的数据集有 1369 个类:

# data shape
print(X_train.shape)
print(X_test.shape)
print(Y_train.shape)
print(Y_test.shape)
(54629, 500)
(23413, 500)
(54629, 1369)
(23413, 1369)

对于这个任务,我决定使用带有以下参数的 LSTM NN:

# define model
maxlen = 400
inp = Input(shape=(maxlen, ))
embed_size = 128
x = Embedding(max_features, embed_size)(inp)
x = LSTM(60, return_sequences=True,name='lstm_layer')(x)
x = GlobalMaxPool1D()(x)
x = Dropout(0.1)(x)
x = Dense(2000, activation="relu")(x)
x = Dropout(0.1)(x)
x = Dense(1369, activation="sigmoid")(x)
model = Model(inputs=inp, outputs=x)
model.compile(loss='binary_crossentropy',
                  optimizer='adam',
                  metrics=['accuracy']
batch_size = 32
epochs = 2
model.fit(X_train, Y_train, batch_size=batch_size, epochs=epochs, validation_split=0.1)

问题Dense:是否有任何确定维度和维度的科学方法LSTM(在我的示例中LSTM dimension=60I Dense dimension=2000、 和II Dense dimension=1369)?

如果没有科学的方法,也许有一些启发式或技巧来说明如何处理具有相似维度的数据。

我随机选择了这些参数。我想提高模型的准确性并正确解决类似问题。

1个回答

这是一个非常广泛和困难的问题,因为这些参数完全取决于数据集的复杂性。(目前)没有确定这些参数的“科学方法”。最好的解决方案是应用超参数优化的一种形式。

有关更多答案,请参阅类似帖子。