Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 利用LSTM嵌入词防止文本分类过度拟合 目标: 使用用户输入的问题(如问题)识别类标签 应答系统) 从大PDF文件中提取数据,并需要预测 基于用户输入的页码 主要用于政策文件,其中 用户对策略有疑问,需要显示特定页面 号码_Tensorflow_Keras_Lstm_Text Classification_Word Embedding - Fatal编程技术网

Tensorflow 利用LSTM嵌入词防止文本分类过度拟合 目标: 使用用户输入的问题(如问题)识别类标签 应答系统) 从大PDF文件中提取数据,并需要预测 基于用户输入的页码 主要用于政策文件,其中 用户对策略有疑问,需要显示特定页面 号码

Tensorflow 利用LSTM嵌入词防止文本分类过度拟合 目标: 使用用户输入的问题(如问题)识别类标签 应答系统) 从大PDF文件中提取数据,并需要预测 基于用户输入的页码 主要用于政策文件,其中 用户对策略有疑问,需要显示特定页面 号码,tensorflow,keras,lstm,text-classification,word-embedding,Tensorflow,Keras,Lstm,Text Classification,Word Embedding,以前的执行情况: 应用了弹性搜索,但精确度非常低,因为用户可以输入任何文本,如“我需要”=“想要” 数据集信息: 数据集包含每行、文本(或段落)和标签(页码)。这里的数据集很小,我只有500行 目前的执行情况: 在Keras和后端is中使用LSTM的应用词嵌入(手套) 张量流 撅嘴 应用活性调节 应用L2 W_正则化器(从0.1到0.001) 从10到600应用不同的nb_期 将手套数据的嵌入尺寸从100更改为300 适用于 转换成小写 删除英语中的停止词 堵塞 删除号码 删除URL和

以前的执行情况: 应用了弹性搜索,但精确度非常低,因为用户可以输入任何文本,如“我需要”=“想要”


数据集信息: 数据集包含每行、文本(或段落)和标签(页码)。这里的数据集很小,我只有500行

目前的执行情况:
  • 在Keras和后端is中使用LSTM的应用词嵌入(手套) 张量流
  • 撅嘴
  • 应用活性调节
  • 应用L2 W_正则化器(从0.1到0.001)
  • 从10到600应用不同的nb_期
  • 将手套数据的嵌入尺寸从100更改为300

适用于

  • 转换成小写
  • 删除英语中的停止词
  • 堵塞
  • 删除号码
  • 删除URL和IP地址
结果:测试数据(或验证数据)的准确度为23%,但列车数据的准确度为91%


代码:
除了简单地减少参数,例如嵌入大小和某些层中的单元数量外,还可以调整LSTM中的重复丢失

LSTM似乎很容易过度适应(我已经读过)

然后,您可以将
dropout
recurrent_dropout
用作每个
LSTM
层的参数

具有任意数字的示例:

x = LSTM(num_lstm, return_sequences=True, W_regularizer=l2(0.001), recurrent_dropout=0.4)(embedded_sequences)
x = Dropout(0.5)(x)
x = LSTM(64,dropout=0,5, recurrent_dropout=0,3)(x)

其他原因可能是错误或数据不足:

  • 您是否尝试过将测试和验证数据混合在一起,并创建新的训练集和验证集

  • 你在训练数据中有多少句话?你在试着用小电视机吗?使用整个集合或尝试数据扩充(创建新的句子及其分类-但这对于文本来说可能非常棘手)


    • 你所描述的听起来很像是过度装修。 如果没有关于数据的更多信息,最好的建议是尝试更强大的正则化方法。 @Daniel已经建议您使用未使用的辍学参数-
      辍学
      经常性辍学
      。 您还可以尝试增加退出层的比率,使用
      W_regularizer
      参数使用更强的正则化


      其他选项可以通过更多信息打开,例如您是否尝试过Daniel的建议以及结果如何。

      辍学和BN对于前馈NNs非常有效。但是,它们可能会导致RNN出现问题(有许多关于此主题的论文发表)


      使RNN模型更好地通用化的最佳方法是增加数据集大小。在您的情况下(大约200个细胞的LSTM),您可能需要100000个或更多的标记样本进行训练。

      对抗性训练方法(作为正规化的一种手段)可能值得研究。

      问题是。。。如何防止过度装配?这不是一个真正的编程问题……您是否曾经仔细查看过测试和/或验证集的内容?您通过传递batch_size=1进行了非常频繁的更新。尝试将其更改为32、64等值。过于频繁的更新可能会中断您的网络。请明确指出问题。不错的分数@Nain,我还将批次大小从1更改为64谢谢@Daniel,我会检查。我尝试使用np.random.shuffle(索引)进行洗牌。我有50个文件,每个文件有10个句子,我如何创建与当前培训相关的新句子?在LSTM中放置recurrent_dropout=0.4时出现以下错误,当前使用keras 1.0 AssertionError:关键字参数未理解:recurrent_dropout
      x = LSTM(num_lstm, return_sequences=True, W_regularizer=l2(0.001), recurrent_dropout=0.4)(embedded_sequences)
      x = Dropout(0.5)(x)
      x = LSTM(64,dropout=0,5, recurrent_dropout=0,3)(x)