使用Tensorflow后端的Keras LSTM RNN中令人费解的训练损失与纪元...行为的任何原因

问题描述 投票:0回答:1

我有一个RNN(下面的代码),有4个LSTM层,每个层有100个节点,1个Dense输出层。使用具有不同随机种子的RandomNormal初始化每个层权重。学习率= 0.00025,beta_1 = 0.9,beta_2 = 0.999,epsilon = 1e-08,0.0衰变。 Adam优化器,验证split = 0.1,批量大小16个epochs = 200个1811个训练样本,202个验证样本X数据形状为(2023,10,16)

我发现损失逐渐下降到第75次,然后是急剧下降然后再次逐渐下降直到第200次。见下图这是一个预测网络,当并发RNN时,测试数据的预测准确性对于域(即置信区间)是足够的使用相同的输入X和y数据运行和聚合。每个RNN的层都用随机种子初始化。每个RNN表现出与纪元行为相同的训练损失。

为什么训练和验证显示这种逐渐下降到第75个时期,急剧下降,然后逐渐下降到第200个持续?

请参阅附图损失与历元图表

model = Sequential()    
model.add(LSTM(100, return_sequences=True, input_shape=(X.shape[1],X.shape[2]),kernel_initializer=rn_initializer)) 
rn_initializer = initializers.RandomNormal(mean=0.0, stddev=0.05, seed=datetime.now().microsecond)
model.add(LSTM(100, return_sequences=True, input_shape=(X.shape[1],X.shape[2]),kernel_initializer=rn_initializer))
rn_initializer = initializers.RandomNormal(mean=0.0, stddev=0.05, seed=datetime.now().microsecond)
model.add(LSTM(100, return_sequences=True, input_shape=(X.shape[1],X.shape[2]),kernel_initializer=rn_initializer))
rn_initializer = initializers.RandomNormal(mean=0.0, stddev=0.05, seed=datetime.now().microsecond)
model.add(LSTM(100,kernel_initializer=rn_initializer))
model.add(Dropout(0.05))
rn_initializer = initializers.RandomNormal(mean=0.0, stddev=0.05, seed=datetime.now().microsecond)    
model.add(Dense(y.shape[1],kernel_initializer=rn_initializer))
optimizer_fc = optimizers.Adam(lr=0.00025, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
model.compile(loss='mae', optimizer=optimizer_fc)
print(model.summary())
python deep-learning keras lstm loss
1个回答
0
投票

这个问题是重复的。请参阅前面的问题和答案Strange loss curve while training LSTM with Keras

© www.soinside.com 2019 - 2024. All rights reserved.