内部错误:无法将输入张量从设备:CPU:0复制到设备:GPU:0以运行_EagerConst:Dst张量未初始化

use*_*312 0 python gpu keras tensorflow

linux_user@server_machine:~/spatial/tuning_neighbors_7$ python3 *hyper*.py
Traceback (most recent call last):
  File "tuner_hyperband.py", line 209, in <module>
    load_data_k(
  File "tuner_hyperband.py", line 127, in load_data_k
    tz = tf.convert_to_tensor(data_z, np.float32)
  File "/home/linux_user/.local/lib/python3.8/site-packages/tensorflow/python/util/traceback_utils.py", line 153, in error_handler
    raise e.with_traceback(filtered_tb) from None
  File "/home/linux_user/.local/lib/python3.8/site-packages/tensorflow/python/framework/constant_op.py", line 106, in convert_to_eager_tensor
    return ops.EagerTensor(value, ctx.device_name, dtype)
tensorflow.python.framework.errors_impl.InternalError: Failed copying input tensor from /job:localhost/replica:0/task:0/device:CPU:0 to /job:localhost/replica:0/task:0/device:GPU:0 in order to run _EagerConst: Dst tensor is not initialized.
linux_user@server_machine:~/spatial/tuning_neighbors_7$
Run Code Online (Sandbox Code Playgroud)

造成这个错误的主要原因是什么?

  • 是因为磁盘空间不足吗?

  • 是因为 RAM 内存低吗?

  • 是因为 GPU 占用了吗?

如何解决这个问题?

Agu*_*ina 5

这是因为 GPU RAM 内存已满(至少对于我来说)。这是完整的消息吗?因为就我而言,它相当长(显然这是一个内存问题)。看这里

一些调试技巧:

  1. 您可以使用它tf.config.experimental.get_memory_info('GPU:0')['current'] / 10**9来查看某个点之前的内存使用情况。
  2. 在某些时候,tensorflow 应该在消息中告诉您可用内存,例如Created device /job:localhost/replica:0/task:0/device:GPU:0 with 9058 MB memory
  3. 如果您使用的是转换为张量或在 或等效函数中使用的 numpy 数组,fitevaluate可以使用它npa.size * npa.itemsize / 10**9来了解创建新张量所需的大小。