微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

张量流中的 LSTM nan 损失

如何解决张量流中的 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 举报,一经查实,本站将立刻删除。