Как выбрать размерность плотного слоя в LSTM? - PullRequest
0 голосов
/ 31 августа 2018

У меня есть задача классификации текста по нескольким меткам. В моем наборе данных 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)?

Если нет научных методов, возможно, есть некоторые эвристики или советы о том, как это сделать с данными аналогичного измерения.

Я случайно выбрал эти параметры. Я бы хотел повысить точность модели и правильно подойти к решению подобных задач.

1 Ответ

0 голосов
/ 31 мая 2019

Я слышал, что оптимизация гиперпараметров - это проблема НП, даже если есть лучший способ сделать это, он может не стоить этого для вашего проекта, учитывая накладные расходы.

Что касается измерения уровня LSTM, я слышал некоторые эмпирически работающие числа из некоторых выступлений на конференции, таких как 128 или 256 модулей и 3 сложенных слоя. Если вы можете составить график ваших потерь во время тренировок, и вы увидели, что потери резко сократились в первые несколько эпох, но затем прекратили уменьшаться, вы можете увеличить емкость своей модели. Это значит сделать его глубже или шире. В противном случае должно быть как можно меньше параметров.

Для измерения плотного слоя, если ваша задача «многие ко многим», что означает, что у вас есть метка определенного измерения, то у вас должно быть такое же число этого измерения, как и количество единиц в плотном слое.

...