gpt4 book ai didi

tensorflow - Tensorflow 的损失突然变成了 nan

转载 作者:行者123 更新时间:2023-12-01 13:34:27 24 4
gpt4 key购买 nike

当我使用 tensorflow 时,损失突然变成了 nan,就像:

Epoch:  00001 || cost= 0.675003929
Epoch: 00002 || cost= 0.237375346
Epoch: 00003 || cost= 0.204962473
Epoch: 00004 || cost= 0.191322120
Epoch: 00005 || cost= 0.181427178
Epoch: 00006 || cost= 0.172107664
Epoch: 00007 || cost= 0.171604740
Epoch: 00008 || cost= 0.160334495
Epoch: 00009 || cost= 0.151639721
Epoch: 00010 || cost= 0.149983061
Epoch: 00011 || cost= 0.145890004
Epoch: 00012 || cost= 0.141182279
Epoch: 00013 || cost= 0.140914166
Epoch: 00014 || cost= 0.136189088
Epoch: 00015 || cost= 0.133215346
Epoch: 00016 || cost= 0.130046664
Epoch: 00017 || cost= 0.128267926
Epoch: 00018 || cost= 0.125328618
Epoch: 00019 || cost= 0.125053261
Epoch: 00020 || cost= nan
Epoch: 00021 || cost= nan
Epoch: 00022 || cost= nan
Epoch: 00023 || cost= nan
Epoch: 00024 || cost= nan
Epoch: 00025 || cost= nan
Epoch: 00026 || cost= nan
Epoch: 00027 || cost= nan

主要的训练代码是:
for epoch in range(1000):
Mcost = 0

temp = []
for i in range(total_batch):
batch_X = X[i*batch_size:(i+1)*batch_size]
batch_Y = Y[i*batch_size:(i+1)*batch_size]
solver, c, pY = sess.run([train, cost, y_conv], feed_dict={x: batch_X, y_: batch_Y, keep_prob:0.8})
Mcost = Mcost + c

print("Epoch: ", '%05d'%(epoch+1), "|| cost=",'{:.9f}'.format(Mcost/total_batch))

由于前 19 个 epoch 的成本是可以的,我相信网络和输入是可以的。对于网络,我使用了4个CNN,激活函数是relu,最后一层是全连接,没有激活函数。

另外,我知道 0/0 或 log(0) 会导致 nan。但是,我的损失函数是:
c1 = y_conv - y_
c2 = tf.square(c1)
c3 = tf.reduce_sum(c2,1)
c4 = tf.sqrt(c3)
cost = tf.reduce_mean(c4)

我使用 GPU GTX 1080 运行 tensorflow。

任何建议表示赞赏。

最佳答案

很多时候,那些 NaN来自于梯度增加导致的优化发散。它们通常不会立即出现,而是在损失突然增加并在几步内达到inf 的阶段之后出现。 .您没有看到这种爆炸性增长的原因可能是因为您只在每个时期检查您的损失——尝试每一步或每几步显示您的损失,您很可能会看到这种现象。

至于为什么你的梯度突然爆炸,我建议你不要尝试tf.sqrt在你的损失函数中。这应该在数值上更稳定。 tf.sqrt具有爆炸梯度接近零的不良特性。这意味着一旦接近解决方案就会增加分歧的风险——看起来很像你所观察到的。

关于tensorflow - Tensorflow 的损失突然变成了 nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44497446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com