TensorFlow出现Found Inf or NaN global norm的排查和解决办法

2023-11-03

在训练神经网络的时候,由于一些原因会出现NaN或者Inf,致使训练终止。在查阅相关资料之后,并且结合我出现的问题,做了一些总结。出现的代码在TensorFlow 1.12.2版本可正常执行。

出现问题的原因

出现NaN或者Inf的原因一般可分为以下三种

  1. 输入数据有错
  2. 出现了运算错误,如除数为零,log0等
  3. 梯度爆炸

输入数据有错

训练数据可能包含脏数据,在数据清洗时没有清洗干净,导致错误数据输入进模型。首先可以在输入模型前,使用np.any(np.isnan(data))来判断数据是否由nan。若没有,要考虑到数据的实际约束,如在我查阅资料时,看到有人输入数据包含最大值和最小值,但是错误数据的最大值和最小值反了,导致模型训练出错。这一部分要根据具体情况进行具体排查。

运算错误

检查模型中除法的分母是否为0,如果有0在结合实际情况进行修改。如果损失函数用到交叉熵,或者取log,也要注意0是否出现。如果判断出有0了,可以使用tf.clip_by_value对值进行限制。

梯度爆炸

常见于模型设计不好,或者模型本身的原因。如RNN易发生梯度爆炸,更换为LSTM可解决问题。或者模型采用了较大的学习速率,导致更新网络参数出现问题。

排查建议

最简单最方便的方法,首先调小学习速率,看看是否是由较高学习速率导致的。可以选择将学习速率降低一半, 或者降低一个数量级。在多次尝试之后,若不能解决问题,考虑其他情况。

检查运算错误,主要是有除法运算和取log的地方。判断是否有0出现,以及是否有0导致的问题,试着使用clip_by_value对数值进行限制。

最后,若还没有解决问题,再检查数据是否清洗干净。

另外,可以使用一些代码来辅助检查。在模型增加以下函数
在这里插入图片描述
如果怀疑模型在某个结点node出现了nan,则在模型中使用add_summary_var(node,name)。并且在模型的最后写上
在这里插入图片描述
同时在sess.run部分加入self.merged_inside。这样一旦出现NaN错误,TensorFlow会提醒出现问题的结点名称(名称即为上面函数中指定的name)。如果添加了多个,则会在第一次出现nan的地方报错,这样可以帮助我们找到问题所在。

本人在使用这种方法以后,发现在经过RNN之后出现了问题,判断可能是由于RNN导致的梯度爆炸。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TensorFlow出现Found Inf or NaN global norm的排查和解决办法 的相关文章

  • 对于只有 10000 个单词的字典来说,真正需要什么嵌入层 output_dim?

    我正在训练一个 RNN 其单词特征集非常少 大约 10 000 个 我计划在添加 RNN 之前从嵌入层开始 但我不清楚真正需要什么维度 我知道我可以尝试不同的值 32 64 等 但我宁愿先有一些直觉 例如 如果我使用 32 维嵌入向量 则每
  • PIL.Image.open和tf.image.decode_jpeg返回值的区别

    我使用 PIL Image open 和 tf image decode jpeg 将图像文件解析为数组 但发现PIL Image open 中的像素值与tf image decode jpeg不一样 为什么会出现这种情况 Thanks 代
  • Tensorflow中通过字符串选择不同的模式

    我正在尝试构建一个 VAE 网络 我希望模型在不同的模式下做不同的事情 我有三种模式 训练 相同 和 不同 以及一个名为 interpolation mode 的函数 它根据模式执行不同的操作 我的代码如下所示 import tensorf
  • 如何将张量流模型部署到azure ml工作台

    我在用Azure ML Workbench执行二元分类 到目前为止 一切正常 我有很好的准确性 我想将模型部署为用于推理的 Web 服务 我真的不知道从哪里开始 azure 提供了这个doc https learn microsoft co
  • tf.gather_nd 直观上是做什么的?

    你能直观地解释一下或者举更多例子吗tf gather nd用于在 Tensorflow 中索引和切片为高维张量 我读了API https www tensorflow org api docs python tf gather nd 但它保
  • TensorFlow 无法编译

    尝试从源代码编译 TensorFlow 时出现以下错误 任何想法都会有帮助 bazel out host bin solib local U S Stensorflow Spython Cgen Unn Uops Upy Uwrappers
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • 在 Keras 模型中删除然后插入新的中间层

    给定一个预定义的 Keras 模型 我尝试首先加载预先训练的权重 然后删除一到三个模型内部 非最后几层 层 然后用另一层替换它 我似乎找不到任何有关的文档keras io https keras io 即将做这样的事情或从预定义的模型中删除
  • 使用 tf.estimator.Estimator 加载检查点和微调

    我们正在尝试将旧的训练代码转换为更符合 tf estimator Estimator 的代码 在初始代码中 我们针对目标数据集微调原始模型 在使用以下组合进行训练之前 仅从检查点加载一些层要恢复的变量 and init fn与监控培训课程
  • MultiHeadAttention Attention_mask [Keras、Tensorflow] 示例

    我正在努力掩盖 MultiHeadAttention 层的输入 我正在使用 Keras 文档中的 Transformer Block 进行自我关注 到目前为止 我在网上找不到任何示例代码 如果有人能给我一个代码片段 我将不胜感激 变压器块来
  • 大于 2GB 的 Tensorflow 图

    我正在尝试优化一个大型张量流保存模型 其中包含 10MB saving model pb 和 16GB 变量 我尝试冻结我的图表并进行一些进一步的转换 我已按照步骤操作https medium com google cloud optimi
  • 移动设备上的 TensorFlow(Android、iOS、Windows Phone)

    我目前正在寻找不同的深度学习框架 特别是用于训练和部署卷积神经网络 要求是 它可以在带有 GPU 的普通 PC 上进行训练 但训练后的模型必须部署在三个主要的移动操作系统上 即 Android iOS 和 Windows Phone Ten
  • 具有不同尺寸图像的 Tensorflow 输入数据集

    我正在尝试使用不同大小的输入图像来训练完全卷积神经网络 我可以通过循环训练图像并在每次迭代时创建单个 numpy 输入来做到这一点 即 for image input label in zip image data labels train
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不
  • 为什么平均百分比误差(mape)非常高?

    我已获得代码掌握机器学习 https machinelearningmastery com time series prediction lstm recurrent neural networks python keras 我修改了mod
  • PyInstaller 是否包含 CUDA

    我正在开发一个Python脚本 我使用Python 3 7 3 它使用tensorflow gpu 1 14 0 并使用PyInstaller 3 5将此脚本转换为可执行文件 我使用的是 CUDA 10 0 和 cuDNN 7 6 1 我的
  • 如何修复 Tensorflow 中的“ValueError:操作数无法与形状 (2592,) (4,) 一起广播”?

    我目前正在设计一个 NoisyNet 层 如下所示 探索嘈杂的网络 https arxiv org abs 1706 10295 在 Tensorflow 中并得到如标题所示的维度误差 而两个张量的维度将在行中按元素相乘filtered o
  • 窗口多维 Tensorflow 数据集

    我有形状的二维数据m by n我想要的窗口大小w沿着第一个轴进入数据集m w许多二维数组 每个数组的大小w by n 例如如果数据是 0 1 2 3 4 5 6 7 8 9 10 11 然后我想将其窗口化 0 1 2 3 4 5 6 7 8
  • TensorFlow 运算符重载

    有什么区别 tf add x y and x y 在 TensorFlow 中 当您使用以下命令构建图表时 您的计算图表会有什么不同 代替tf add 更一般地说 有 或者其他张量超载的操作 如果至少有一个x or y is a tf Te
  • 在 Datalab 中使用 Python3,我无法将代表 Google Cloud Storage 存储桶中的文件的字符串列表作为带有张量流的 feed_dict 提供

    我是 tf 新手 在尝试处理某些文件时遇到问题 这是代码摘录 xlabel to files list map dog bark subset of data with two files result gs some bucket som

随机推荐

  • xss跨站之waf绕过及安全修复(28)

    手工探针xss绕过waf规则 打开靶场 写入跨站测试语句发现拦截 这里就做一个最经典的方法 做一个关键字拆分来确立拦截的是什么东西 去掉最后字符串 访问还是拦截 再去掉alert 1 访问还是拦截 再去掉尖括号里面一个字符 留下scrtp在
  • Linux学习之旅-《Linux就该这么学》—— 第十六天

    DHCP 作用域 一个完整的IP地址段 DHCP协议根据作用域来管理网络的分布 分配IP地址及其他配置参数 超级作用域 用于管理处于同一个物理网络中的多个逻辑子网段 超级作用域中包含了可以统一管理的作用域列表 排除范围 把作用域中的某些IP
  • Devos勒索病毒的最新威胁:如何恢复您的数据?

    引言 在黑客与安全专家之间的无尽较量中 devos勒索病毒是一种异想天开的数字杀手 它以黑客们独具匠心的方式 病毒攻击着受害者的数据 挟持着宝贵信息 引发一场数据恢复的奇妙探险 本文91数据恢复将为你揭示 devos勒索病毒的不同寻常之处
  • 软测面试了一个00后,绝对能称为是内卷届的天花板

    前言 公司前段缺人 也面了不少测试 结果竟然没有一个合适的 一开始瞄准的就是中级的水准 也没指望来大牛 提供的薪资也不低 面试的人很多 但平均水平很让人失望 令我印象最深的是一个00后测试员 他技术基础方面确实还不错 面试也表现的非常自信
  • 有什么哪些便宜的云服务器推荐?

    竞争激烈的时代 优惠永远不会少 1元团购 1元打车 0元骑单车 1元吃外卖 1元游景区 1元XXX等等 正是由于激烈的竞争 我们才可以享受折扣力度如此大的活动 谁让这是互联网时代呢 得用户者才得天下 云计算时代 亦是如此 在新基建的引导下
  • 解决报错:@org.springframework.beans.factory.annotation.Autowired(required=true)

    先把问题贴出来 org springframework beans factory annotation Autowired required true 报这个错是因为 Autowired required true 当使用 Autowir
  • 利用Spring-MVC访问数据库

    1 创建相关的项目 首先相关路径 在pom xml中添加具有Spring mvc mysql dbcp的三个包 2 首先创建Admin类与数据库信息对应 2 1 数据库 2 2 jdbc properties 名称不可改变 user是数据库
  • Python读写CSV文件--追加方式多空行

    说明 文章首发于HURUWO的博客小站 本平台做同步备份发布 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览 原文链接 Python读写CSV文件 追加方式多空行直接点击即可前往访问 更多技术文章访问本人博客HuRuWo的
  • 3dmax文件打不开了,怎么办

    3dmax文件 有时候原来操作还是好好的 下一次或者隔天再打开的时候 就会出现错误 无论怎么开 都开不了 这个该怎么办 其实这种情况 还真不好办 因为很多情况下 这种文件基本是损坏了 再打开会比较难了 造成这样的原因多种多样 有一种是病毒引
  • 用Vue.js开发一个电影App的前端界面

    我们要构建一个什么样的App 我们大多数人使用在线流媒体服务 如Netflix 观看我们最喜欢的电影或者节目 这篇文章将重点介绍如何通过使用vue js 2 建立一个类似风格的电影流媒体WEB交互界面 见上图 最终的产品可以去这里找 htt
  • 完美匹配-匈牙利算法(Hungarian method Edmonds)讲解

    目录 匈牙利算法 Hungarian method Edmonds 例题1 有完美匹配 例题2 无完美匹配 代码实现 变量及函数说明 测试数据1 测试结果1 测试数据2 测试结果 匈牙利算法 Hungarian method Edmonds
  • char和varchar的区别、区别的原因以及常用场景举例

    一 区别 1 最大长度 char最大长度是255字符 varchar最大长度是65535个字节 2 定长 char是定长的 不足的部分用隐藏空格填充 varchar是不定长的 3 空间使用 char会浪费空间 varchar会更加节省空间
  • 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(4)-Charles如何设置捕获会话

    1 简介 前边几篇宏哥介绍了Charles界面内容以及作用 今天宏哥就讲解和分享如何设置Charles后 我们就可以愉快地捕获会话 进行抓包了 因为上一篇许多小伙伴看到宏哥的Charles可以分开看到request和response 而自己
  • tp5怎么验证手机号码

    直接上干货 转载于 https www cnblogs com yehuisir p 11595274 html
  • python 定义全局变量

    python定义全局变量 全局变量可以在代码任意位置创建 能够被所有对象和函数引用 有利于变量的共享 全局变量的定义 global 变量名 声明后引用 OLD URL http oldboyedu com def bb global OLD
  • luajit class

    https gist github com gaspard 1087382 https gist github com marciol 1983296 luajit simple jit lua ffi require ffi simple
  • 逆向分析学习入门教程

    转在于 逆向工厂 一 从hello world开始 前沿 从本篇起 逆向工厂带大家从程序起源讲起 领略计算机程序逆向技术 了解程序的运行机制 逆向通用技术手段和软件保护技术 更加深入地去探索逆向的魅力 一 程序如何诞生 1951年4月开始在
  • 20系列显卡服务器,RTX20系列被严重低估,他不仅是一张游戏显卡

    Turing架构的另一个特殊功能是它具有Tensor Core 这是用于深度学习AI运算的计算单元 借助Tensor Cores Turing图形卡的AI性能得到了极大的提高 FP32浮点性能达到13 4TFLOPS FP16浮点性能甚至达
  • 【LaTex】第二行作者居中(IEEEtran模板)

    LaTex 第二行作者居中 IEEEtran模板 存在的问题 有四个或五个作者的时候 第二行的作者无法居中 解决方案 在环境中添加如下代码 作者居中 makeatletter newcommand linebreakand end IEEE
  • TensorFlow出现Found Inf or NaN global norm的排查和解决办法

    在训练神经网络的时候 由于一些原因会出现NaN或者Inf 致使训练终止 在查阅相关资料之后 并且结合我出现的问题 做了一些总结 出现的代码在TensorFlow 1 12 2版本可正常执行 出现问题的原因 出现NaN或者Inf的原因一般可分