Tensorflow-GPU工具包了解和详细安装方法
目录
基础知识信息了解
显卡算力
CUDA兼容
Tensorflow gpu安装
CUDA/cuDNN匹配和下载
查看Conda driver的版本
下载CUDA工具包
查看对应cuDNN版本
下载cuDNN加速库
CUDA/cuDNN安装
CUDA安装方法
cuDNN加速库安装
配置CUDA/cuDNN环境变量
配置环境变量
核验是否安装成功
Tensorflow-gpu安装
命令安装
报错处理
核验安装结果
直通车:人工智能发展历程和工具搭建学习-CSDN博客
通过之前的文章学习,我们已经安装好了Anaconda和Tensorflow2.4,但是在后期的学习中,会涉及到神经网络的学习等数据量较大的操作,普通的tensorflow-cpu版本处理速度较慢,所以我们再安装一个更加强大的tensorflow-gpu版本,它可以调用conda的接口实现gpu运算的平台,利用显卡帮助我们运算程序,以提高后期学习中的程序处理速度,提高学习效率。
基础知识信息了解
显卡算力
在这个之前,我们首先要确保自己的电脑是英伟达显卡,并且运算能力在3.5以上,大家可以根据下面的网址查看自己电脑显卡的运算能力,然后还需要下载conda工具包和对应的gpu加速库cuDNN。
直通车:CUDA GPUs - Compute Capability | NVIDIA Developer
后期安装CUDA通过deviceQuery.exe也可以看到当前显卡的算力。

CUDA兼容
这里CUDA12.1是支持的最高版本的CUDA,可以向下兼容,且可以安装多个版本的CUDA,你可以通过更改环境变量来更改为你需要用到的CUDA版本。
Tensorflow gpu安装
CUDA/cuDNN匹配和下载
查看Conda driver的版本

我们打开命令行窗口cmd,输入nvidia-smi,这里显示的是显卡的版本信息,这里显示的是conda driver的版本信息。

下载CUDA工具包
直通车:CUDA Toolkit Archive | NVIDIA Developer
我们去conda下载官网,下载CUDA工具包。根据刚刚我们查到的CUDA版本信息,此处我的CUDA版本为12.x,根据CUDA可以向下兼容的特性,我们可以对应下载CUDA11.4的工具包。

在这个界面,由于我的电脑是Windows11 64位,所以我选择的是这些选项,大家要根据自己的电脑系统类型选择合适的版本进行下载。
查看对应cuDNN版本
下面查找对应的cuDNN版本,可以在Tensorflows官网中查看tensorflow-gpu跟cuda cudnn的版本对应信息.
在 Windows 环境中从源代码构建 | TensorFlow

下载cuDNN加速库
接下来我们打开cuDNN下载地址:
直通车:https://developer.nvidia.com/rdp/cudnn-archive

由于我们CUDA是11的版本 对应的是cuDNN8的版本,这些版本的对应,小伙伴们一定要注意!现在我们打开cuDNN下载官网,在这里,根据刚刚查看到的cuda版本,选择适当的cuDNN版本,我刚下载的是CUDA11.4的版本,也就是CUDA11.x的版本,所以我选择的是cuDNN8.x的版本,这里我下载版本为8.2.1,然后选择windows x86的选项进行下载。
注意:在这里点击下载的时候会跳转到注册登录页面,由于在这里我已经登录,所以没有跳转,等待安装包下载完成,我们就准备好了Tensorflow-gpu所需要的工具包,这就是已经下载好的工具包。
如果各位小伙伴在这里遇到问题无法解决,可以在评论区进行求助。
CUDA/cuDNN安装
CUDA安装方法
接下来我们开始安装CUDA,双击打开下载的安装包,并等待进度条加载完毕。



点击同意并继续选择自定义,然后点击下一步。在这个界面显示的是将要安装的组件名称、版本号和电脑中该组件的版本号,当前版本号为空,则说明电脑中没有该组件。
我们取消NVIDIA GeForce Experience这一项,然后点击下一步。这里的安装路径一般选择默认就好,也可以更改,但是文件目录一定要记清楚,后面配置环境的时候会用到。

然后点击下一步,点击next,等待安装完成。

然后点击下一步,这里显示的是已经安装的所有组件的状态,然后点击关闭。
cuDNN加速库安装
下面开始安装Gpu加速库cuDNN,将文件解压,解压完成以后,我们打开会得到如下三个目录。

然后我们打开刚刚安装好的CUDA的根目录,然后把codnn里边并目录下的所有文件复制到CUDA的bin目录如下。



将include里边的所有文件复制到CUDA的include文件下,lib文件夹也是如此。这样我们便完成了CUDA和cuDNN的安装。
配置CUDA/cuDNN环境变量
配置环境变量
下面开始设置系统环境变量,右键点击此电脑,选择属性打开高级系统,设置环境变量,在系统变量里面找到path,点击编辑。我们可以看到CUDA的两个文件已经存在,点击新建浏览,找到CUDA目录。

将其上移,与其他两个环境变量一起,这样就完成了环境变量的设置。

核验是否安装成功
可以通过nvcc -V命令查看是否配置CUDA成功

输入nvidia-smi命令,返回GPU型号则安装成功

同时也可以通过在CUDA执行bandwidthTest.exe和deviceQuery.exe和核验,返回PASS则表明GPU安装成功

Tensorflow-gpu安装
接下来我们开始安装tensorflow-gpu,安装过程可以参考上篇文章tensnflow2.4的安装,这里我就不再详述。不同之处,就是我们创建并激活另一个独立环境tensorflow-gpu选择适当的版本号,小伙伴们可以根据自己的安装环境选择对应的版本安装,第二步是安装相关软件,在第三步的时候安装tensorflow-gpu,命令为pip install tensorflow-gpu==对应版本号安装完成以后就完成了tensorflow-gpu的安装。
直通车:人工智能发展历程和工具搭建学习-CSDN博客
命令安装
创建独立环境并激活
conda create -n tensorflow-gpu python==3.8conda activate tensorflow-gpu
安装相关软件包
# conda install numpy matplotlib PIL scikit-learn pandas 于下行命令等价pip install numpy matplotlib Pillow scikit-learn pandas -i Simple Index
安装Tensorflow-gpu
pip install tensorflow-gpu==2.6.0 -i Simple Index
报错处理
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. matplotlib 3.7.5 requires numpy<2,>=1.20, but you have numpy 1.19.5 which is incompatible. pandas 2.0.3 requires numpy>=1.20.3; python_version < "3.10", but you have numpy 1.19.5 which is incompatible.
pip uninstall numpypip install numpy==1.19.5
TypeError: Descriptors cannot be created directly. If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0. If you cannot immediately regenerate your protos, some other possible workarounds are: 1. Downgrade the protobuf package to 3.20.x or lower. 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
pip uninstall protobuf pip install protobuf==3.20.0

校验安装结果
最后我们测试一下是否安装成功,打开命令行窗口,激活我们刚才创建的独立环境。输入python,打开python交互模式,输入import tensorflow as tf,输入我们的测试语句tf.test.is_gpu_available(),它的输出结果为true,显示我们安装成功。
python
import tensorflow as tftf.test.is_gpu_available()exit()

相关文章:
Tensorflow-GPU工具包了解和详细安装方法
目录 基础知识信息了解 显卡算力 CUDA兼容 Tensorflow gpu安装 CUDA/cuDNN匹配和下载 查看Conda driver的版本 下载CUDA工具包 查看对应cuDNN版本 下载cuDNN加速库 CUDA/cuDNN安装 CUDA安装方法 cuDNN加速库安装 配置CUDA/cuDNN环境变量 配置环境变量 核验是否安…...
【python】OpenCV GUI——Trackbar(14.2)
学习来自 OpenCV基础(12)OpenCV GUI中的鼠标和滑动条 文章目录 GUI 滑条介绍cv2.createTrackbar 介绍牛刀小试 GUI 滑条介绍 GUI滑动条是一种直观且快速的调节控件,主要用于改变一个数值或相对值。以下是关于GUI滑动条的详细介绍:…...
Qt自定义日志输出
Qt自定义日志输出 简略版: #include <QApplication> #include <QDebug> #include <QDateTime> #include <QFileInfo> // 将日志类型转换为字符串 QString typeToString(QtMsgType type) {switch (type) {case QtDebugMsg: return "D…...
[C++] vector list 等容器的迭代器失效问题
标题:[C] 容器的迭代器失效问题 水墨不写bug 正文开始: 什么是迭代器? 迭代器是STL提供的六大组件之一,它允许我们访问容器(如vector、list、set等)中的元素,同时提供一个遍历容器的方法。然而…...
Java——变量作用域和生命周期
一、作用域 1、作用域简介 在Java中,作用域(Scope)指的是变量、方法和类在代码中的可见性和生命周期。理解作用域有助于编写更清晰、更高效的代码。 2、作用域 块作用域(Block Scope): 块作用域是指在…...
WPF界面设计
1、使用C#-WPF实现抽屉效果-炫酷漂亮的侧边栏导航菜单-SplitViewMD主题重绘原生控件的美观效果-提供源码Demo下载 码源地址:https://download.csdn.net/download/Prince999999/89424685 2、使用C#-WPF实现抽屉效果-菜单导航功能实现,常规的管理系统应该…...
【C#】使用JavaScriptSerializer序列化对象
在C#开发语言编程中,通常使用系统内置的JavaScriptSerializer类来序列化对象,以便将其转换为JSON格式的文本存储与后台服务通信, 在这里将为大家详细介绍一下这个过程。 文章目录 反序列化序列化忽略属性 假设处理的数据中有一个对象类, 如下 public cl…...
HTML静态网页成品作业(HTML+CSS)—— 明星吴磊介绍网页(5个页面)
🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有5个页面。 二、作品演示 三、代…...
EasyRecovery2024数据恢复神器#电脑必备良品
EasyRecovery数据恢复软件,让你的数据重见天日! 大家好!今天我要给大家种草一个非常实用的软件——EasyRecovery数据恢复软件!你是不是也曾经遇到过不小心删除了重要的文件,或者电脑突然崩溃导致数据丢失的尴尬情况呢&…...
前端HTML相关知识
1.什么是HTML HTML 指的是超文本标记语言 ( HyperText Markup Language )。 超文本:是指页面内可以包含图片、链接、声音,视频等内容 标记:标签(通过标记符号来告诉浏览器网页内容该如何显示) 浏览器根据不同的HTML标签,解析成我们看到的网页 2.HTML的特点 HTML不…...
集合面试题
目录 ①HashMap的理解?以及为什么要把链表转换为红黑树?②HashMap的put?③HashMap的扩容?④加载因子为什么是0.75?⑤modcount的作用?⑥HashMap与HashTable的区别?⑥HashMap中1.7和1.8的区别&am…...
集成学习概述
概述 集成学习(Ensemble learning)就是将多个机器学习模型组合起来,共同工作以达到优化算法的目的。具体来讲,集成学习可以通过多个学习器相结合,来获得比单一学习器更优越的泛化性能。集成学习的一般步骤为:1.生产一组“个体学习…...
记录一次root过程
设备: Redmi k40s 第一步, 解锁BL(会重置手机系统!!!所有数据都会没有!!!) 由于更新了澎湃OS系统, 解锁BL很麻烦, 需要社区5级以上还要答题。 但是,这个手机…...
函数(上)(C语言)
函数(上) 一. 函数的概念二. 函数的使用1. 库函数和自定义函数(1) 库函数(2) 自定义函数的形式 2. 形参和实参3. return语句4. 数组做函数参数 一. 函数的概念 数学中我们其实就见过函数的概念,比如:一次函数ykxb,k和b都是常数&a…...
ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的侧信道抵御
安全之安全(security)博客目录导读 目录 一、系统PMU计数器 二、使用信号和功耗操作进行的故障攻击 一、系统PMU计数器 性能监测单元 (PMU) 计数器可能成为泄露机密信息的侧信道,如访问模式或受RME安全保障保护的安全状态下的执行控制流。以下规则补充了《Arm CoreSight™…...
Java高级技术探索:深入理解JVM内存分区与GC机制
文章目录 引言JVM内存分区概览垃圾回收机制(GC)GC算法基础常见垃圾回收器ParNew /Serial old 收集器运行示意图 优化实践结语 引言 Java作为一门广泛应用于企业级开发的编程语言,其背后的Java虚拟机(JVM)扮演着至关重…...
新视野大学英语2 词组 6.15
do you feel as confused and manipulated as i do with this question 你是否和我一样,对这个问题感到困惑和被操控 manipulated:被操控 defy common sense and contradict each other 违背常识且相互矛盾 defy:违背 contradict…...
【JavaScript】MDN
一、初识 1.1 基础 1.1.1 语言速成课 1.1.1.1 变量 变量是存储值的容器。首先用let关键字声明一个变量,后面跟着你给变量的名字 变量命名区分大小写 分号在JavaScript中是用来分隔语句的,但是如果语句后面有一个换行符(或者在{block}中只…...
Qt/C++中的异步编程
Qt/C++中的异步编程 1 介绍2 含义2.1 QtConcurrent2.2 std::future2.3 Qml中的Promise3 使用场景4 代码示例5 注意事项5.1异常处理5.2 线程安全5.3 性能优化5.4 线程间通信5.5 避免死锁1 介绍 异步编程是现代应用程序开发中不可或缺的一部分。它允许程序在执行耗时任务时保持响…...
解决javadoc一直找不到路径的问题
解决javadoc一直找不到路径的问题 出现以上问题就是我们在下载jdk的时候一些运行程序安装在C:\Program Files\Common Files\Oracle\Java\javapath下: 一开始是没有javadoc.exe文件的,我们只需要从jdk的bin目录下找到复制到这个里面,就可以使用…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...


