У меня есть задача классификации текста по нескольким меткам. В моем наборе данных 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=60
, I Dense dimension=2000
и II Dense dimension=1369
)?
Если нет научных методов, возможно, есть некоторые эвристики или советы о том, как это сделать с данными аналогичного измерения.
Я случайно выбрал эти параметры. Я бы хотел повысить точность модели и правильно подойти к решению подобных задач.