RuntimeWarning: invalid value encountered in log
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RuntimeWarning: invalid value encountered in log相关的知识,希望对你有一定的参考价值。
参考技术A 在训练faster rcnn的过程中使用的是自己制作的数据集,但是当训练迭代到120次的时候,出现了下面的错误:RuntimeWarning:invalid value encountered in log targets_dw = np.log(gt_widths / ex_widths)百度了一下,发现正确的做法是修改tf-faster-rcnn/lib/datasets/pascal_voc.py(或者py-faster-rcnn-master/lib/datasets/pascal_voc.py)文件,大概在160行左右,将167行至171行每一行后面的-1删除。
据 faster rcnn训练过程出现loss=nan解决办法 这个博客说是因为自己制作的xml文件中有些框的坐标是从左上角开始的,也就是(0,0),如果再减一就会出现log(-1)的情况,所以就会出现loss=nan的问题了,如果还出现loss=nan,可以再试试调小学习率以及各个损失项的占比重。
因此当出现了RuntimeWarning的问题时有两种解决方案:
1、换数据集进行训练,如果没有这个问题,就说明确实是数据集的问题;
结论: 可行 ,目前仅仅更换了训练数据集,正在训练中,已经迭代到了2万次,还没有出现这个错误!
2、修改pascal_voc.py文件,验证是否还会出现这个问题;
Pycharm 更新到 2016.2 后导入 RuntimeWarning
【中文标题】Pycharm 更新到 2016.2 后导入 RuntimeWarning【英文标题】:Pycharm import RuntimeWarning after updating to 2016.2 【发布时间】:2016-11-28 22:16:07 【问题描述】:更新到新版本 2016.2 后,我得到了
RuntimeWarning: Parent module 'tests' not found while handling absolute import
import unittest
RuntimeWarning: Parent module 'tests' not found while handling absolute import
import datetime as dt
'tests' 是我的主应用程序包中的一个包,当我尝试在此文件夹中执行单元测试时收到这些警告。此问题仅在更新到 2016.2 后出现。除了警告之外,其余代码都可以正常工作。
编辑:这是一个已知问题 - https://youtrack.jetbrains.com/issue/PY-20171。他们建议替换 PyCharm 安装文件夹中的 utrunner.py。
【问题讨论】:
是的。切换到 2016.2 后我有同样的行为 好的,我会开一张 JetBrains 的票。 现在,我只是将旧的 utrunner.py 复制到 2016.2 - ~/pycharm-2016.1/helpers/pycharm/utrunner.py 我也有同样的行为,真的很烦人! @mircealungu - 备份! 【参考方案1】:这是 2016.2 版本中引入的一个已知问题。可以在 JetBrains 网站here 上关注进度。根据此页面,它将在 2017.1 版本中修复。您可以按照其他人同时提到的 utrunner.py 解决方法 - 此文件的副本已附加到链接的票证。
【讨论】:
将旧文件 (/Applications/PyCharm.app/Contents/helpers/pycharm/utrunner.py) 替换为从youtrack.jetbrains.com (download link) 下载的文件。非常适合我。 这在pycharm-2016.2.3中仍然没有修复 这似乎在 2016.3 中没有修复,出现同样的警告。 2016.3.1 中似乎没有修复 2016.3.2 未修复【参考方案2】:最新的建议(Dec. 19, 2016) 是将此行放在单元测试脚本的顶部:
from __future__ import absolute_import
【讨论】:
这解决了我的问题,但我认为这不是官方推荐,因为提到这个的用户似乎不是 JetBrains 开发人员。由于即使仅执行绝对导入也会出现此警告,因此添加该行不会是一段不必要的代码,需要在下一次发布后删除吗? 它可能需要在将来的某个时候被删除,是的。有关详细信息,请参阅***.com/q/7075082/584846 是的,我的意思是在这种情况下确实没有必要这样做,因为这个特定的__future__
导入仅用于修复 PyCharm 中的错误。至少在我的情况下,源代码不需要修复。因此,似乎遵循已接受答案中的建议会更好,因为那时根本不需要触及源代码。
我赞成from __future__ import absolute_import
。如果您的 Python 2.7 代码可以接受,我更喜欢使用所有 future 导入。它将简化最终迁移到 Python 3.6 的过程。
这是唯一对我有用的解决方案。下载另一个utrunner.py
并替换原来的似乎不起作用。也许 Pycharm 正在缓存它;我没有尝试重启我的机器。【参考方案3】:
在 OS X 上,我通过替换解决了这个问题
Applications/PyCharm.app/Contents/helpers/pycharm/utrunner.py
可以在以下位置找到旧版本 http://code.metager.de/source/xref/jetbrains/intellij/community/python/helpers/pycharm/utrunner.py
【讨论】:
【参考方案4】:在 Ubuntu 16.04 上,Bobby 的解决方案也有效:
只需替换您的本地utrunner.py
文件
/usr/local/pycharm-edu-3.0/helpers/pycharm/utrunner.py
来自 Jetbrains 网站:http://code.metager.de/source/xref/jetbrains/intellij/community/python/helpers/pycharm/utrunner.py
【讨论】:
我发现我的安装在不同的地方,但是用上面的版本替换它后它工作了——为什么他们没有回滚?这样做不会使python不稳定吗??【参考方案5】:在 Windows 10 上 Bobby 的解决方案也有效:
只需将您的本地 utrunner.py 文件替换为
C:\Program Files (x86)\JetBrains\PyCharm 2016.3\helpers\pycharm
来自 Jetbrains 网站:http://code.metager.de/source/xref/jetbrains/intellij/community/python/helpers/pycharm/utrunner.py
【讨论】:
以上是关于RuntimeWarning: invalid value encountered in log的主要内容,如果未能解决你的问题,请参考以下文章
RuntimeWarning:协程“Messageable.send”从未等待 python.py
Pycharm 更新到 2016.2 后导入 RuntimeWarning
Django 中 DateField 的 RuntimeWarning