Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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
如何在python中处理具有许多特性的LSTM?_Python_Machine Learning_Keras_Classification_Lstm - Fatal编程技术网

如何在python中处理具有许多特性的LSTM?

如何在python中处理具有许多特性的LSTM?,python,machine-learning,keras,classification,lstm,Python,Machine Learning,Keras,Classification,Lstm,我有一个二进制分类问题。我使用以下keras模型进行分类 input1 = Input(shape=(25,6)) x1 = LSTM(200)(input1) input2 = Input(shape=(24,6)) x2 = LSTM(200)(input2) input3 = Input(shape=(21,6)) x3 = LSTM(200)(input3) input4 = Input(shape=(20,6)) x4 = LSTM(200)(input4) x = concatena

我有一个二进制分类问题。我使用以下keras模型进行分类

input1 = Input(shape=(25,6))
x1 = LSTM(200)(input1)
input2 = Input(shape=(24,6))
x2 = LSTM(200)(input2)
input3 = Input(shape=(21,6))
x3 = LSTM(200)(input3)
input4 = Input(shape=(20,6))
x4 = LSTM(200)(input4)
x = concatenate([x1,x2,x3,x4])
x = Dropout(0.2)(x)
x = Dense(200)(x)
x = Dropout(0.2)(x)
output = Dense(1, activation='sigmoid')(x)
然而,我得到的结果非常糟糕。我认为原因是我有太多的功能,因此,需要在
连接后有更多的改进层

我还在想,在
连接后使用flatte()层是否有帮助
无论如何,因为我是一个新的深入学习,我不太确定如何使这成为一个更好的模式


如果需要,我很乐意提供更多细节。

在输出层之前退出的
可能会有问题。我建议删除
退出
层和评估性能,然后在模型在训练集中表现良好时重新引入正则化

  • 移除所有防止过度装配的东西,例如脱落和正则化器。可能发生的情况是,您的模型可能无法使用给定的层捕获数据的复杂性,因此在添加正则化器之前,您需要确保您的模型能够首先进行过度拟合

  • 现在试着增加致密层的数量和每层神经元的数量,直到你们能看到一些改善。还有一种可能是您的数据太过嘈杂,或者您只有很少的数据来训练模型,因此您甚至无法生成有用的预测

  • 现在,如果您是幸运的,并且您可以看到过度拟合,您可以添加Dropout和regularizer

  • 因为每个神经网络都是基于梯度的算法,所以最终可能会达到局部最小值。您可能还需要使用不同的初始权重多次运行该算法,然后才能获得好的结果,或者您可以更改损失函数,这样您就有了一个凸问题,其中局部最小值是全局最小值

    如果你不能取得更好的结果


    您可能需要尝试不同的拓扑,因为LSTM只是尝试对假定具有马尔可夫特性的系统建模。您可以查看嵌套的LSTM或类似的东西,它以这样的方式对系统进行建模,即下一个时间步不仅仅取决于当前时间步。

    非常感谢您的回答。什么是规范化?有没有可能告诉我如何用python对我的模型进行正则化?对不起,正则化是一种在模型中加入惩罚项的方法,有助于避免过度拟合。澄清一下,辍学是正规化的一种形式。我的意思是,一旦模型表现良好,你可以重新引入辍学。但一般来说,如果你想引入其他形式的正则化,比如L2或L1,在Keras中很容易——文档中描述得很好:。嗨,以防万一,如果你有时间,请告诉我你对这个问题的想法:)