一、运行代码时指定了NVIDIA GPU,NVIDIA GPU却没有显存频率波动,但CPU却满载
这个问题首先要检测安装好 Tensorflow-GPU版 后,GPU是否正常运行,运行下列代码检测
-
import tensorflow as tf import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' print(tf.test.is_gpu_available())
显示为TRUE,代表NVIDIA GPU正常运行
显示为FALSE,代表NVIDIA GPU并没有运行
FALSE的解决办法:
运行下列代码检测:
-
import tensorflow as tf tf.test.is_gpu_available()
运行后会发现,有的DLL缺失,无法找到,这里以图中的 cusolver64_10为例
如果显示not found,我们需要回到 CUDA 安装目录下的bin目录,里面有对应的各个DLL
如,名为 cusolver64_xx 的文件,将此文件单独复制出去,然后改为名为 cusolver64_10
放回bin目录下,重新运行检测代码,显示为TRUE,即代表NVIDIA GPU已正常运行
上图所示,将改好名的文件,复制回bin目录
在确认GPU正常工作后,在我们的代码里,进行GPU指定,添加下列代码:
-
import os os.environ["CUDA_VISIBLE_DEVICES"] = "0"
‘ 0 ’ 表示的即是我们的 Nvidia GPU,在上面检测图中,我们也可以看到,visible gpu devices:0
如果不指定,即默认使用所有GPU,CPU也会满载运行;如果指定错误,同理GPU也不会工作。
当然,在CMD窗口,我们也可以运行Nvidia指令,查询GPU信息,输入命令: nvidia-smi
二、运行代码时,出现 numpy.core._exceptions.MemoryError 错误
如图所示
解决方法:
1.增加虚拟内存:在Tensorflow虚拟环境所在盘,增加虚拟内存
控制面板——系统和安全——系统——性能设置——高级——虚拟内存更改——Tensorflow在D盘
提示:
Unable to allocate 9.31 GiB for an array with shape (25000, 100000) and data type float32
我们设置的虚拟内存大小,就给够10G,如果是18.9 Gib,那我们就给够20G虚拟内存
2.降低 batch_size 的值
由于batch_size过大导致 超出内存,我们就将代码中的batch_size值手动降低,再运行