TensorFlow报错Internal: no kernel image is available for execution on the device解决

本文讲述了在Windows环境下使用TensorFlow 2.3.1时遇到的GPU错误,重点在于nokernelimageisavailableforexecutiononthedevice问题。作者提供了检查CUDA版本、配置和降低TensorFlow版本的解决步骤,建议对初学者有帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、错误描述

运行代码:

import tensorflow as tf
out = tf.random.uniform([4, 10])
y = tf.constant([2, 3, 2, 0])
y = tf.one_hot(y, depth=10)
loss = tf.keras.losses.mse(y, out)
loss = tf.reduce_mean(loss)
print(loss)

报错信息:

F .\tensorflow/core/kernels/random_op_gpu.h:232] Non-OK-status: GpuLaunchKernel(FillPhiloxRandomKernelLaunch, num_blocks, block_size, 0, d.stream(), gen, data, size, dist) status: Internal: no kernel image is available for execution on the device
主要集中在Internal处为报错原因。也就是 no kernel image is available for execution on the device。

运行环境

操作系统:Windows 10
GPU:GTX 850M(当时的强势显卡,现在的垃圾显卡),计算能力5.0
CUDA:驱动版本(Driver Version)11.0,运行版本(Runtime Version)10.1
(CUDA信息查看方式,命令行cd到cuda安装目录下的\extras\demo_suite目录,直接运行deviceQuery.exe即可,不要在文件夹内双击,显示信息第二行CUDA Capability Major/Minor version number为显卡的计算能力)
python: 3.7.7
Tensorflow: 2.3.1

二、解决(仅windows下,其他系统不讨论,请阅读其他文章)

1、首先检查cuda安装条件、配置是否正确

1)确保安装的TensorFlow为GPU版本,即pip时,命令为pip install tensorflow-gpu

2)检查cuda版本与是否与cudnn版本匹配

3)检查cuda环境变量

4)命令行下运行python,检查是否加载GPU,在python内:

import tensorflow as tf
tf.test.is_gpu_available()

运行完毕后最后一行显示True,则表示成功加载GPU,TensorFlow版本也为GPU版本。

5)在上一步输出结果中,查看是否出现dll文件not found,如果有,请阅读其他资料解决这个问题。

2、查阅到的普遍的解决方案,捡一些有实际意义的说

1)检查CUDA版本是否符合GPU显卡计算能力要求

如果第1小点里检查是否加载GPU那步,返回是True的话,也说明了计算能力符合要求。

如果不符合要求(显卡垃圾),请自觉降低cuda版本

2)检查硬件,必须为NVIDIA显卡(废话)

3)检查python版本,是否为3.6或3.7,目前TensorFlow不很支持3.8

4)修改Makefile文件

这条当没看见吧,属于面向cuda编程的范畴,或者手动编译TensorFlow,没什么用,跟TensorFlow没关系。

3、最终解决

查阅了n多资料,度娘也尽力了,在某论坛发现了一丝丝提示。

降低TensorFlow版本至2.2!

pip uninstall tensorflow-gpu
pip install tensorflow-gpu==2.2

将TensorFlow版本降至2.2,这个错误就解决了,原因不明,治标不治本,对于对TensorFlow 2.3.1有需求的人就gg了,但基础学习来讲可以这么干。对于TensorFlow产生这个错误的说明度娘等搜索引擎相关资料基本没有,都是针对CUDA本身进行编程的还有关于pytorch的,不适合TensorFlow。
有猜测是因为2.3.1不太支持850m显卡。可能还是因为我显卡太菜了。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值