【问题标题】:Numpy / Polyfit - Suppress printing of Intel MKL Error messageNumpy / Polyfit - 禁止打印英特尔 MKL 错误消息
【发布时间】:2014-06-11 21:59:16
【问题描述】:

我在一个程序中多次计算polyfit,我的一些输入是np.nan,并且会遇到算法问题。我知道这一点,在这个应用程序中我不在乎。

当事情搞砸时,这会打印到控制台:

Intel MKL ERROR: Parameter 4 was incorrect on entry to DELSD.

我只是想抑制这个错误。我已经试过了:

import warnings
warnings.simplefilter('ignore', np.RankWarning)
warnings.simplefilter('ignore', np.ComplexWarning)
warnings.filterwarnings('ignore', "Intel MKL ERROR")

这会抑制一些警告,但不会抑制英特尔 MKL 警告。我只是想阻止它在控制台中打印(因为它破坏了我正在打印的其他状态消息)。

以下应该触发问题:

import numpy as np
def line_fit(R, X):
    num_rows = np.shape(R)[0]
    p = np.zeros(num_rows)
    for i in range(num_rows):
        temp = np.polyfit(R[i, :], X[i, :], 1)
        p[i] = temp[1]
    return p
temp = np.array((((198.652-76.1781j),(132.614-43.8134j),(115.042-41.2485j),(91.7754-39.1649j),(78.8538-37.389j),(67.8769-34.6342j)),
((np.nan),(1671.79-796.522j),(1206.44-824.202j),(654.572-682.673j),(438.175-559.025j),(303.624-452.122j)),
((np.nan-1j*np.nan),(1671.32-794.931j),(1198.71-803.533j),(649.574-624.276j),(443.286-530.36j),(308.609-438.738j))))
R = np.real(temp)
X = np.imag(temp)
coeff = line_fit(R, X)

Python 2.7.6(默认,2013 年 11 月 10 日,19:24:24)[MSC v.1500 64 位 (AMD64)],NumPy 1.8.0

【问题讨论】:

  • 我假设您正在使用来自 lfd.uci.edu/~gohlke/pythonlibs/#numpy 的 MKL 链接的 numpy?
  • 我想是的。不确定是否有办法检查(numpy.__version__ 没有提供任何线索),我使用的是 WinPython,我自己没有编译任何东西。
  • 我在我的 ubuntu 12.10 python 2.7.3 numpy 1.8.0 上运行了您的示例,使用 GCC 编译,错误看起来更清晰:“ValueError: On entry to DLASCL parameter number 4 has an非法值”——希望对你有所帮助。
  • 谢谢。绝对不喜欢南。我刚才试过warnings.simplefilter('ignore', ValueError),但这并没有抑制它。必须有某种方法可以防止将内容写入控制台...?
  • 英特尔 MKL 错误在我遵循解决方案 here 后消失了

标签: python numpy scipy warnings intel-mkl


【解决方案1】:

如果一个函数决定不使用正常的 Python 错误报告机制(即异常处理和警告)直接将错误消息打印到 stdout/stderr,那么您几乎无法阻止它这样做。如果它真的让您烦恼,您显然可以完全禁止写入 stderr。在另一个 SO question 中有一个关于如何临时执行此操作的解决方案(例如,仅针对此功能): Suppress stdout / stderr print from Python functions。显然,如果你这样做,你也会错过这个函数的所有相关输出,所以要小心使用它。

【讨论】:

  • 我尝试了其他 SO 问题的建议解决方案,但没有运气。我仍然得到错误。
【解决方案2】:

错误

英特尔 MKL 错误:进入 DELSD 时参数 4 不正确

当您的输入中有 Nan 或 Inf 值时发生。请检查并估算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-30
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 2016-09-26
    相关资源
    最近更新 更多