Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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网络不从序列中学习。使用Keras、TF后端安装不足或过度安装_Tensorflow_Keras_Deep Learning_Lstm_Recurrent Neural Network - Fatal编程技术网

Tensorflow LSTM网络不从序列中学习。使用Keras、TF后端安装不足或过度安装

Tensorflow LSTM网络不从序列中学习。使用Keras、TF后端安装不足或过度安装,tensorflow,keras,deep-learning,lstm,recurrent-neural-network,Tensorflow,Keras,Deep Learning,Lstm,Recurrent Neural Network,提前感谢你的帮助 我正在处理一个4个字符序列的问题。我在训练集中有大约18000个序列。使用Keras+TensorFlow后端。可预测的字符总数为52个 当我使用下面在“网络a”中看到的一个网络,需要学习大约49000个参数时,即使在300个历史时期内,网络的过度拟合和验证损失也会急剧增加。无论哪种方式,验证精度都不会达到20% 当我使用下面的“网络B”时,需要学习大约8K的参数,网络似乎无法学习。即使在3000个时期内,训练数据的准确率也不会超过40%,验证集的准确率也不会超过10% 我在中

提前感谢你的帮助

我正在处理一个4个字符序列的问题。我在训练集中有大约18000个序列。使用Keras+TensorFlow后端。可预测的字符总数为52个

当我使用下面在“网络a”中看到的一个网络,需要学习大约49000个参数时,即使在300个历史时期内,网络的过度拟合和验证损失也会急剧增加。无论哪种方式,验证精度都不会达到20%

当我使用下面的“网络B”时,需要学习大约8K的参数,网络似乎无法学习。即使在3000个时期内,训练数据的准确率也不会超过40%,验证集的准确率也不会超过10%

我在中间尝试过很多配置,没有什么真正的成功。 你有什么建议吗?

这两种情况都使用以下配置:

rms = keras.optimizers.RMSprop(lr=0.01, rho=0.9, epsilon=None, decay=0.0)

model.compile(loss='categorical_crossentropy', optimizer=rms,  metrics=['accuracy'])

网络A

Shape of input matrix:
    4 1
Shape of Output:
    57    


“网络B”


我可以看到您的输入形状是“4x1”,您直接将其输入到LSTM,您的输入格式是什么?因为在这里,似乎每个时间步(对于每个字符)都有一个1的维度(所以可能只是传递了一个int?)

正如您所说,您要处理的是4个字符的序列,您必须将它们视为分类变量,并以适当的方式对它们进行编码


例如,您可以one hot对它们进行编码,或者使用
嵌入层将它们嵌入到某个维度。

我可以看到您的输入形状是“4x1”,您直接将其输入到LSTM,您的输入格式是什么?因为在这里,似乎每个时间步(对于每个字符)都有一个1的维度(所以可能只是传递了一个int?)

正如您所说,您要处理的是4个字符的序列,您必须将它们视为分类变量,并以适当的方式对它们进行编码


例如,您可以one hot对它们进行编码,或者使用
嵌入层将它们嵌入到某个维度。

谢谢您的回复。输入序列用自定义dict(字母到数字)编码并归一化,输出预测值使用np.UTILStategorical类似:#normalize input ninput=ninput/float(vocab)#prepare output for Neural Network,noutput=np_utils.to_categorical(noutput)示例(在np.utils之前)序列示例:创建的序列示例:[38,33,18,13]->--下一个值:-->2是否直接输入类似于[38,33,18,13]的内容作为LSTM的输入?网络将使用标准化为ninput=ninput/float(vocab)的[38,33,18,13]进行输入。ninput包含所有的输入序列,但这是一个字符序列,这不是正确的处理方式。这不是对字符序列的正确预处理,因为每个字符都是一个分类变量,这里您将它们视为数字数据,但您不能说例如字符“a”是字符“b”的两倍。您可以对它们进行一次热编码,每个字符都有一个向量(大小为b)字符位置满0和1,输入为“4 x vocab”。或者您可以删除代码的规范化部分,并添加一个“EmbeddingLayer”,它将嵌入序列的每个字符(您可以查看Keras的“EmbeddingLayer”文档)。感谢您的回复。输入序列用自定义dict(字母到数字)编码并归一化,输出预测值使用np.UTILStategorical类似:#normalize input ninput=ninput/float(vocab)#prepare output for Neural Network,noutput=np_utils.to_categorical(noutput)示例(在np.utils之前)序列示例:创建的序列示例:[38,33,18,13]->--下一个值:-->2是否直接输入类似于[38,33,18,13]的内容作为LSTM的输入?网络将使用标准化为ninput=ninput/float(vocab)的[38,33,18,13]进行输入。ninput包含所有的输入序列,但这是一个字符序列,这不是正确的处理方式。这不是对字符序列的正确预处理,因为每个字符都是一个分类变量,这里您将它们视为数字数据,但您不能说例如字符“a”是字符“b”的两倍。您可以对它们进行一次热编码,每个字符都有一个向量(大小为b)字符位置满0和1,输入为“4 x vocab”。或者,您可以删除代码的规范化部分,并添加一个“EmbeddingLayer”,它将嵌入序列的每个字符(您可以查看Keras的“EmbeddingLayer”文档)。
Layer (type)                 Output Shape              Param #   
=================================================================
lstm_3 (LSTM)                (None, 4, 256)            264192    
_________________________________________________________________
dropout_2 (Dropout)          (None, 4, 256)            0         
_________________________________________________________________
lstm_4 (LSTM)                (None, 4, 128)            197120    
_________________________________________________________________
dropout_3 (Dropout)          (None, 4, 128)            0         
_________________________________________________________________
lstm_5 (LSTM)                (None, 32)                20608     
_________________________________________________________________
dense_1 (Dense)              (None, 128)               4224      
_________________________________________________________________
dropout_4 (Dropout)          (None, 128)               0         
_________________________________________________________________
dense_2 (Dense)              (None, 57)                7353      
_________________________________________________________________
activation_1 (Activation)    (None, 57)                0         
=================================================================
Total params: 493,497
Trainable params: 493,497
Non-trainable params: 0
Shape of input matrix:
4 1
Shape of Output:
57
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
lstm_6 (LSTM)                (None, 4, 32)             4352      
_________________________________________________________________
dropout_5 (Dropout)          (None, 4, 32)             0         
_________________________________________________________________
lstm_7 (LSTM)                (None, 16)                3136      
_________________________________________________________________
dropout_6 (Dropout)          (None, 16)                0         
_________________________________________________________________
dense_3 (Dense)              (None, 57)                969       
_________________________________________________________________
activation_2 (Activation)    (None, 57)                0         
=================================================================
Total params: 8,457
Trainable params: 8,457
Non-trainable params: 0