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

news/2024/11/14 14:20:46/

一、错误描述

运行代码:

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显卡。可能还是因为我显卡太菜了。


http://www.ppmy.cn/news/737738.html

相关文章

磁盘扩容(LVM)

目录 1、逻辑卷LVM--(Logical Volume Manager(逻辑卷管理)的简写) 1.1.LVM管理 传统分区的缺点: 当采用LVM时: 逻辑卷简介 2.基本概念 1.2.lvm的制作 2.实战(创建LVM逻辑卷) 流程图&am…

千兆以太网标准

千兆以太网(又名:吉比特以太网)是以gbit/s速率进行以太网帧传输的网络技术,由IEEE802.3定义。 千兆以太网的传输线缆主要有4种: 1. 单模光纤(1000BaseLX); 2. 多模光纤&#xff1…

点云配准——(1)几种点云配准算法比较

几种点云配准算法比较 参考许多博客,看了点云配准的好多算法,决定对这几天搞得点云配准做一个总结,主要也防止自己忘掉。主要参考下面这个博客,链接已经附上。 https://blog.csdn.net/peach_blossom/article/details/78506184 一…

Spark学习(一)---Spark简介和运行环境

文章目录 1.Spark介绍1.1 Spark核心模块1.2 使用Spark写一个WordCount1.2 Spark运行环境1.2.1 Local模式1.2.2 Standalone 模式1.2.3 高可用模式(HA)模式1.2.4 Yarn模式 1.Spark介绍 Hadoop中的MapReduce框架在设计之初并不是为了满足循环迭代式数据流处理,因此在多…

高通骁龙CPU的手机对比

不比不知道,一比吓一跳!!! 没有对比,就没有伤害!!!

骁龙芯片性能排行2020_9月安兔兔性能排行榜公布,骁龙865霸榜,iQOO独占鳌头

Hello,大家好。手机性能已经是一个老生常谈的话题了,虽然现在手机的性能普遍过剩,但是还是有很多厂商愿意去跑一跑分,以此证明自己的手机才是最优秀的,最近安兔兔就公布了9月份的手机性能排行榜单,只不过这…

Cyclo(L-Pro-L-Trp-),38136-70-8,L型氨基酸环二肽,及其参数说明

(文章资料汇总来源于:陕西新研博美生物科技有限公司小编MISSwu) 为大家介绍(CAS:38136-70-8),试剂仅用于科学研究,不可用于人类,非药用,非食用。 分子式:C16…

腾讯游戏服务器外包二面

1.基础问题 2.网络协议 3.数据结构 3.1二叉树的前序遍历 3.2实现二叉树的前序遍历 https://www.nowcoder.com/practice/5e2135f4d2b14eb8a5b06fab4c938635?tpId295&tqId2291302&ru/exam/oj&qru/ta/format-top101/question-ranking&sourceUrl%2Fexam%2Foj…