簡體   English   中英

如何在LSTM中選擇Dense層的維數?

[英]How to choose dimensionality of the Dense layer in LSTM?

我有一個多標簽文本分類的任務。 我的數據集有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)

問題 :是否有任何科學方法可用於確定DenseLSTM維度(在我的例子中, LSTM dimension=60I Dense dimension=2000II Dense dimension=1369 )?

如果沒有科學的方法,也許有一些啟發式或提示如何使用類似維度的數據來做到這一點。

我隨機選擇了這些參數。 我想提高模型的准確性,並正確地解決類似的問題。

我聽說優化超參數是一個np問題,即使有更好的方法,考慮到開銷成本,它可能不值得你的項目。

對於LSTM層的維度,我從一些會議討論中聽到了一些經驗豐富的工作數字,例如128或256個單元和3個堆疊層。 如果您可以在訓練中繪制損失,並且您看到損失在前幾個時期急劇減少但隨后停止減少,您可能希望增加模型的容量。 這意味着使其更深或更寬。 否則,應盡可能少參數。

對於密集層的維度,如果您的任務是多對多,這意味着您具有特定維度的標簽,那么您必須具有與密集層中的單元數相同的維度數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM