单词级语言模型的准确性极差,并且每个时期的培训时间都很高

时间:2019-06-24 07:24:12

标签: deep-learning lstm recurrent-neural-network

使用Keras API建立我的第一个单词级语言模型。准确性极差,而且训练时间令人难以置信。

我使用Keras库开发了我的第一个单词级语言模型,并将我的训练集作为《低俗小说》的脚本。我清除了所有标点符号的文本并将所有单词转换为小写。当我开始在给定的数据集上训练我的模型时,它的开始精度为3%,每个时期的训练时间为6-7分钟。这非常令人沮丧,我想知道是否应该调整我的超参数,或者这是我模型的正常行为,并且在更多的时期会产生更好的结果?

model=Sequential()

model.add(LSTM(256, input_shape=(X.shape[1], X.shape[2]), 
return_sequences=True))
model.add(Dropout(0.5))
model.add(LSTM(256))
model.add(Dropout(0.5))
model.add(Dense(y.shape[1], activation='softmax'))

model.compile(optimizer='adam',loss='categorical_crossentropy', metrics= 
['accuracy'])
model.fit(X,y,batch_size=128,epochs=100)

1 个答案:

答案 0 :(得分:0)

从观察到每个时期6-7分钟并不多,您可以检查以下原因:

  1. 您正在使用GPU或CPU进行培训吗?通常,它应该可以在GPU上更快地运行。

  2. 对于LSTM,每个单元
  3. 256个单位是一个很大的维度。尝试减少到​​128甚至64,检查性能是否受到影响。

  4. 数据集的维数是多少?如果您的数据集很大,则训练花费大量时间是正常的。
  5. 如果您对以上所有内容都有答案,则可以尝试修改batch_size;但是,请注意,因为不建议使用非常大的批处理大小(建议不要增加到256,但不要更多)。
  6. 检查数据的完整性。如果您知道数据来自可靠的来源,请注意将数据馈送到神经网络的方式(清洗,预处理)。也许数据(因变量(y)和/或X_train)的输入方式不正确。