tensorflow2.x训练模型出现nan

news/2024/7/4 9:44:39

1.报如下错误:

tensorflow.python.framework.errors_impl.InvalidArgumentError:  assertion failed: [predictions must be >= 0] [Condition x >= y did not hold element-wise:] [x (sub_2:0) = ] [[-nan][-nan][-nan]...] [y (Cast_2/x:0) = ] [0]
         [[{{node assert_greater_equal/Assert/AssertGuard/else/_1/assert_greater_equal/Assert/AssertGuard/Assert}}]] [Op:__inference_train_function_1223]
Function call stack:
train_function

 训练模型是想要绘制AUC曲线,报上面这个错误。错误表明predictions value 为非负。

但是实际的情况是好像为0也不可以,应该在计算AUC时候,用了tf.sqrt()函数,所以报错。使用sigmod(x)函数作为最后一层的激活函数时,因为x过小,导致函数值为0(由于计算机自身进行相关取舍)。

2.解决办法:

outputs = tf.clip_by_value(outputs, 1e-10, 0.9999)

对输出值进行了相关限制,保证输出值>0。

3.参考资料:

https://blog.csdn.net/u011630575/article/details/113893585

https://stackoverflow.com/questions/63170518/assertion-failed-predictions-must-be-0-condition-x-y-did-not-hold-elemen(该链接中的解决办法链接无法打开)

https://blog.csdn.net/snowleopard_bin/article/details/115655143

https://blog.csdn.net/DD_PP_JJ/article/details/115612220

https://blog.csdn.net/baidu_38008726/article/details/110680083


http://www.niftyadmin.cn/n/1737972.html

相关文章

损失函数softmax_cross_entropy、binary_cross_entropy、sigmoid_cross_entropy之间的区别与联系

cross_entropy-----交叉熵是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距。 在介绍softmax_cross_entropy,binary_cross_entropy、sigmoid_cross_entropy之前,先来回顾一下信息量、熵、交叉熵等基本概念。 ----------------…

NetLog 大规模应用实战:Database-sharding 技术

一、背景 Netlog是一家社交网站社区,目前拥有大规模的应用数据,包括: 超过4000w的活跃用户数、每个月5000w的UV、每月50亿的PV、每月60亿的在线时长、支持26中语言,覆盖5个主要的欧洲国家,如意大利、德国,土…

0-1Loss、Cross Entropy Loss、Hinge Loss、Exponential Loss、Modified Huber Loss 等几种常见损失函数的比较

前言 在监督式机器学习中,无论是回归问题还是分类问题,都少不了使用损失函数(Loss Function)。**损失函数(Loss Function)**是用来估量模型的预测值 f(x) 与真实值 y 的不一致程度。若损失函数很小&#x…

Heroku的架构

很早之前在Infoq上看到Heroku的介绍,不过当时这个网站并没有推出,今天在整理收藏夹的时候发现,Heroku已经推出一段时间,而且现在作为云计算平台已经有很快的发展了。 Heroku是Rails应用最简单的部署平台。只是简单的把代码放进去&…

深度学习中训练集,验证集,测试集的学习心得

这段时间在做一个实验,但是由于数据集较小,所以我就只分了训练集和验证集(相当于把测试集当成验证集用了),由于没有真正意义上的测试集,所以做完实验之后开始怀疑自己,这样做真的对吗&#xff1…

[转]Javascript的变量与delete操作符

Javascript的变量 实际上Javascript中,变量 对象属性,这是因为 Javascript 在执行脚本之前会创建一个Global对象,所有的全局变量都是这个Global对象的属性,执行函数时也会创建一个Activation对象,所有的局部变量都是这…

使用 GNU profiler 来提高代码运行速度

原文链接:http://www.ibm.com/developerworks/cn/linux/l-gnuprof.html 使用 GNU profiler 来提高代码运行速度寻找应用程序中占用时间最长的部分 Martyn Honeyford (martynhuk.ibm.com), 软件工程师, IBM UK Labs 2006 年 5 月 08 日 改进应用程序的性能是一项非常耗时…

tensorflow2.0在call()方法中使用tf.reshape()方法报错

记录一下自己在tensorflow2.x的call()方法中,打算改变张量的形状,所以使用了: x tf.reshape(x,(batch_size,-1)) 这样的代码,发生报错。 原因是在构建动态图的时候tensorflow2.0内部还没有创建具体的变…