繁体   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