在LSTM上使用稳压器时,损耗返回NaN

时间:2019-08-14 02:57:39

标签: python tensorflow machine-learning keras

当我训练LSTM模型时,它会为损失返回nan

  • 我正在使用单层LSTM,最后使用Dense softmax层进行分类输出
  • 亚当优化器
  • 分类交叉熵损失函数
  • 激活Relu

由于某种原因,当我在LSTM层上使用任何种类的稳压器时,都会得到NaN的损失。 同样,只有当我使LSTM层超过128个单位时,才会发生这种情况,因此,如果我除去正则化或使网络等于或小于128个单位,就可以摆脱它。 我已经确认输入中没有NaN。 我想知道为什么会这样,以及如何规范更大的LSTM层。

这是我的代码:

def build_model():
model = Sequential()
model.add(LSTM(130, batch_input_shape=(None,90,5), return_sequences=False, recurrent_dropout=0.1, kernel_regularizer=regularizers.l2(0.01)))
model.add(Activation("relu"))
model.add(Dense(2))
model.add(Activation("softmax"))
model.compile(optimizer="adam", loss = "categorical_crossentropy", metrics=["categorical_accuracy"])
return(model)

谢谢

0 个答案:

没有答案