对大文本使用 LSTM
Using LSTM for large text
我有一个从 kaggle ( https://www.kaggle.com/c/fake-news/data ) 获得的用于检测假新闻的数据集。
我想使用 LSTM 进行分类
单篇文章平均字数在750字左右。我试图删除标点符号、停用词、删除数字。预处理文本也需要很长时间。
我想要一种使用 keras 将大文本输入 LSTM 的方法。我应该怎么做才能减少计算时间而不损失很多准确性。
您可以尝试一些方法来加快速度:
1。使用 CUDNN 版本的 LSTM
它通常更快,检查可用层数 here keras.layers.CuDNNLSTM
就是您想要的。
2。使用 Conv1d
创建特征
您可以使用 1 维卷积,kernel_size
指定应考虑多少个单词,stride
指定移动的跳跃 window。对于 kernel_size=3
和 stride=3
,padding="SAME"
它会使你的维度下降三倍。
你可以堆叠更多的卷积层。
除此之外,您仍然可以正常使用 LSTM
。
3。完全放弃 LSTM
您可以使用 1d 卷积和池化进行分类,RNN 不是唯一的方法。
好的方面:你不会遇到梯度消失(也可以通过双向 LSTM 稍微缓解)。
不利的一面是:你将失去单词之间的严格依赖性,尽管这对于二进制分类来说应该不是什么大问题(我想这是你的目标)。
我有一个从 kaggle ( https://www.kaggle.com/c/fake-news/data ) 获得的用于检测假新闻的数据集。 我想使用 LSTM 进行分类
单篇文章平均字数在750字左右。我试图删除标点符号、停用词、删除数字。预处理文本也需要很长时间。
我想要一种使用 keras 将大文本输入 LSTM 的方法。我应该怎么做才能减少计算时间而不损失很多准确性。
您可以尝试一些方法来加快速度:
1。使用 CUDNN 版本的 LSTM
它通常更快,检查可用层数 here keras.layers.CuDNNLSTM
就是您想要的。
2。使用 Conv1d
创建特征
您可以使用 1 维卷积,kernel_size
指定应考虑多少个单词,stride
指定移动的跳跃 window。对于 kernel_size=3
和 stride=3
,padding="SAME"
它会使你的维度下降三倍。
你可以堆叠更多的卷积层。
除此之外,您仍然可以正常使用 LSTM
。
3。完全放弃 LSTM
您可以使用 1d 卷积和池化进行分类,RNN 不是唯一的方法。
好的方面:你不会遇到梯度消失(也可以通过双向 LSTM 稍微缓解)。
不利的一面是:你将失去单词之间的严格依赖性,尽管这对于二进制分类来说应该不是什么大问题(我想这是你的目标)。