tensorflow `tf.signal.rfftnd` 在 CPU 执行时抛出 NotFoundError(GPU 行为未知)

h6my8fg2  于 5个月前  发布在  其他
关注(0)|答案(3)|浏览(54)

问题类型

Bug

你是否在TensorFlow Nightly版本中重现了这个bug?

问题来源

二进制文件

TensorFlow版本

tf 2.16.1

自定义代码

OS平台和发行版

WSL Ubuntu 22.04

移动设备

  • 无响应*

Python版本

3.11.8

Bazel版本

  • 无响应*

GCC/编译器版本

  • 无响应*

CUDA/cuDNN版本

  • 无响应*

GPU型号和内存

  • 无响应*

当前行为?

当调用tf.signal.rfftnd时,Tensorflow抛出一个NotFoundError。在我看来,TF似乎想在GPU上运行这段代码,但由于我只在CPU上运行,所以没有可用的GPU。目前我无法在GPU上进行测试。

独立代码以重现问题

import tensorflow as tf
x = tf.random.normal([8, 8])
y = tf.signal.rfftnd(x)

相关日志输出

---------------------------------------------------------------------------
NotFoundError                             Traceback (most recent call last)
Cell In[4], line 3
      1 import tensorflow as tf
      2 x = tf.random.normal([8, 8])
----> 3 y = tf.signal.rfftnd(x)

File ~/.pyenv/versions/3.11.8/envs/emess/lib/python3.11/site-packages/tensorflow/python/ops/signal/fft_ops.py:325, in _rfftn_wrapper.<locals>._rfftn(input_tensor, fft_length, axes, norm, name)
    323   elif norm == "ortho":
    324     input_tensor /= np.sqrt(n)  # should be sqrt(N)
--> 325 return rfft_n(
    326     input_tensor,
    327     fft_length,
    328     axes,
    329     Tcomplex=complex_dtype,
    330     name=name,
    331 )

File ~/.pyenv/versions/3.11.8/envs/emess/lib/python3.11/site-packages/tensorflow/python/ops/gen_spectral_ops.py:1744, in rfftnd(input, fft_length, axes, Tcomplex, name)
   1742   return _result
   1743 except _core._NotOkStatusException as e:
-> 1744   _ops.raise_from_not_ok_status(e, name)
   1745 except _core._FallbackException:
   1746   pass

File ~/.pyenv/versions/3.11.8/envs/emess/lib/python3.11/site-packages/tensorflow/python/framework/ops.py:5983, in raise_from_not_ok_status(e, name)
   5981 def raise_from_not_ok_status(e, name) -> NoReturn:
   5982   e.message += (" name: " + str(name if name is not None else ""))
-> 5983   raise core._status_to_exception(e) from None

NotFoundError: Could not find device for node: {{node RFFTND}} = RFFTND[Tcomplex=DT_COMPLEX64, Treal=DT_FLOAT]
All kernels registered for op RFFTND:
  device='GPU'
 [Op:RFFTND] name:
kse8i1jr

kse8i1jr1#

这个问题已经过期,因为它已经开放了7天,没有活动。如果没有进一步的活动发生,它将被关闭。谢谢。

plicqrtu

plicqrtu2#

感谢你的推荐。我在Google Colab上尝试了你的方法,出现了相同的错误:NotFoundError: Could not find device for node: {{node RFFTND}} = RFFTND[Tcomplex=DT_COMPLEX64, Treal=DT_FLOAT] All kernels registered for op RFFTND: <no registered kernels> [Op:RFFTND] name:
请查看我的Colab上的代码:https://colab.research.google.com/drive/16Y52PrW3eRBtTHOzw32chYgJ5sMZFgwq?usp=sharing
我现在选择使用TensorFlow中现有的FFT实现来解决1、2和3维的问题作为临时解决方案。然而,它们没有axes参数,所以我不得不将所有数据从格式channels last转换为格式channels first,然后再使用FFT。

g9icjywg

g9icjywg3#

你可以显式地启用带有CPU支持的TensorFlow重新安装。以下是针对WSL Ubuntu 22.04的一般构建指令;请按照以下步骤操作,并告知我们?
a. 卸载当前的TensorFlow安装:pip uninstall tensorflow
b. 在安装过程中,使用一个标志或配置选项来指定CPU支持。例如,你可能可以使用pip install tensorflow-cpu.
谢谢!

相关问题