FutureWarning:不推荐将issubdtype的第二个参数从`float`转换为`np.floating`

时间:2018-01-19 11:46:34

标签: python numpy tensorflow

更新我的NumpyTensorflow后,我收到了这些警告。我已经尝试了these,但没有任何作用,每一个建议都会受到赞赏。

FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters
2018-01-19 17:11:38.695932: I C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2

11 个答案:

答案 0 :(得分:63)

这可能是您的情况,也可能不是,但同样的警告也会从h5py包中吐出:

  

/home/user/bin/conda3/lib/python3.6/site-packages/h5py/__init__.py:34:   FutureWarning:转换issubdtype的第二个参数   不推荐floatnp.floating。将来,它将被对待   为np.float64 == np.dtype(float).type。来自._conv导入   register_converters为_register_converters

对于使用问题来到这里的任何人,这是一个known h5py issue,与numpy 1.14一起介绍。正如开发者所说:

  

您可以忽略该警告,它不会导致任何问题   那一刻,但你应该升级到h5py的下一个版本   变得可用。

......所以它无害。修复刚刚掌握merged。但是在更新发布之前,解决方法是将numpy降级到以前的版本:

pip install numpy==1.13.0
使用修复程序

更新h5py has released RC版本。以下命令应该这样做:

pip install h5py==2.8.0rc1

更新(最终):现在有一个完整的版本。所以你可以简单地运行:

pip install --upgrade h5py

答案 1 :(得分:23)

您可以升级h5py

pip install --upgrade h5py

答案 2 :(得分:14)

我尝试过这些并且它已经为我解决了同样的问题,只需将它们放在代码顶部

import os
os.environ["TF_CPP_MIN_LOG_LEVEL"]="3"

答案 3 :(得分:4)

您还可以使用以下代码,使用代码开头的以下行从终端删除警告线。

代码有警告:

import numpy as np, sys, tensorflow as tf print('\nStart of Code...\n')

输出:

FutureWarning: Conversion of the second argument of issubdtype from float to np.floating is deprecated. In future, it will be treated as np.float64 == np.dtype(float).type. from ._conv import register_converters as _register_converters

Start of Code...

已删除警告的代码:

import numpy as np, sys, tensorflow as tf for i in range(3): # Add this for loop. sys.stdout.write('\033[F') # Back to previous line. sys.stdout.write('\033[K') # Clear line.

print('\nStart of Code...\n')

输出:

Start of Code...

答案 4 :(得分:4)

这是由于h5py和numpy之间存在版本冲突。您需要做的就是通过命令降低您的numpy版本,如下所示:

private Thread[] _threads = new Thread[100];
private int _threadCount = 0;

private void UI_btnStartThread_Click(object sender, EventArgs e)
{
    //create new thread and the referenced the method
   Thread newThread = new Thread(new ParameterizedThreadStart(DrawCircle));

   //the data is passed to the thread as an argument
   newThread.Start(new AddCircle(_cDrawer, Color.FromArgb(_mainRandom.Next(0, 256), _mainRandom.Next(0, 256), _mainRandom.Next(0, 256)), _circleSize));

    _threads[_threadCount++] = newThread;
}

答案 5 :(得分:3)

以前我得到同样的错误,我刚刚使用了warnings()模块。我在所有导入后使用了这些代码,

import warnings
warnings.filterwarnings('ignore', '.*do not.*',)

答案 6 :(得分:3)

上述情况均不适用于我的情况,我不想降级任何套餐。

Github上有一个直截了当的解决方案,只是取消警告:

import warnings
with warnings.catch_warnings():
    warnings.filterwarnings("ignore",category=FutureWarning)
    import numpy as np
    import tensorflow as tf
    import h5py as h5py

然后导入任何包导致numpy, tensorflow, h5py语句范围内的错误(with

答案 7 :(得分:2)

将scipy升级为此警告的rif。为此,您可以使用pip升级scipy。

**sudo pip install --upgrade scipy**

答案 8 :(得分:2)

您可能想首先找出原因(此处的大多数答案适用于特定情况-使用过时功能的库-在这种情况下为NumPy)。

根本原因

简而言之,有什么叫:

np.issubdtype(something, float)

代替:

np.issubdtype(something, np.floating)

这是在断言和逻辑调度代码中完成的,而最终用户很少编写这些代码。因此-通常这是由您正在使用的库完成的。

如何进行

因此,您应该找出导致此警告的原因。您将使用warnings模块,但使用的方式与其他答案相反:

import warnings
warnings.filterwarnings('error')
# run rest of your code here

这不仅会给您警告,而且还会提供错误和堆栈跟踪。然后-你真黄金:

Traceback (most recent call last):
  File (...)
     # user code snipped...
  File "C:\...\site-packages\vtk\util\numpy_support.py", line 137, in numpy_to_vtk
    assert not numpy.issubdtype(z.dtype, complex), \
  File "C:\...\site-packages\numpy\core\numerictypes.py", line 422, in issubdtype
    FutureWarning, stacklevel=2
FutureWarning: Conversion of the second argument of issubdtype from `complex` to `np.complexfloating` is deprecated. 
  In future, it will be treated as `np.complex128 == np.dtype(complex).type`.

在这里您看到这次是VTK。当然,哪一个不太可能是您的特定问题,但是在知道引起此警告的原因之后,您可以做很多有用的事情:

  • 在正确的地方静默警告(在调用代码之前),然后恢复所有警告
  • 寻找已修复此问题的库的更新版本
  • 也许报告有问题的图书馆的问题
  • 如果存在问题,但没有解决方法:请编写修复程序并创建请求请求
  • 让世界变得更美好。

答案 9 :(得分:1)

我通过安装/重新安装ipykernel解决了这个问题:

pip3 install --upgrade ipykernel

如果你有不同的点我们当然是那个

答案 10 :(得分:0)

您需要升级h5py,并且numpy版本应为<1.17:

pip install --upgrade h5py
pip install "numpy<1.17"