张量流中的 LSTM nan 损失

问题描述

我有一个带有 LSTM 的分类模型来处理顺序数据。当我通过此命令启用 Eager 模式时,它可以完美地训练;

tf.config.experimental_run_functions_eagerly(真)

当我关闭它时,模型在第一个 minibatch 中计算损失没有任何问题,但在第二个 minibatch 上给出 nan 损失,依此类推。

我在 Windows 上使用 Tensorflow 2.1.0。优化器是 Adam。 minibatch 大小为 48。我确定 LSTM 是问题所在。因为当我将其更改为密集层时,问题就消失了。我也尝试过 GRU 但得到了相同的行为。我不想把所有的代码都放在这里,因为它对我的项目来说太自定义了。但我可以添加相关部分:

初始化:

 self.x_enc_hidden1 = LSTM(64,return_state=True)
 self.x_enc_hidden2 = LSTM(64,return_sequences=True)
 self.x_enc_pool = GlobalMaxPooling1D()
 self.x_enc_mean = Dense(self.cfg.z_dim)
 self.x_enc_var = Dense(self.cfg.z_dim)

计算:

zx = self.x_enc_hidden2(x)
zx,h,c = self.x_enc_hidden1(zx)
h = tf.concat([h,c],axis = -1)
mean = self.x_enc_mean(h)
logvar = self.x_enc_var(h)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)