第36步 深度学习图像识别:TensorFlow-gpu环境配置

2023-11-18

基于WIN10的64位系统演示

一、写在前面

从这一期开始分享基于深度学习图像识别的学习笔记和代码,相比于之前的ML分类模型,图像识别的门槛会更高,包括硬件方面、代码复杂度和基础理论知识等。同样,首先把必要的深度学习框架(类似做ML分类,要依赖sklearn包)安装好,然后就无脑撸代码。

深度学习框架提供了丰富的工具和库,以支持深度学习模型的开发和训练。目前深度学习的几个主要框架:

(1)TensorFlow(谷歌开发):TensorFlow是一个广泛使用的开源深度学习框架,提供了丰富的工具和库,可用于构建各种类型的神经网络模型。它拥有强大的计算图和自动求导功能,并提供了高级抽象层,如Keras,使得模型的开发和训练变得更加简单。

(2)PyTorch(Facebook开发):PyTorch是另一个广受欢迎的开源深度学习框架,它采用动态图的方式进行计算,使得模型的构建和调试更加灵活和直观。PyTorch提供了丰富的神经网络模块和优化算法,并且在研究领域得到广泛应用。

(3)Keras:Keras是一个高级神经网络API,它能够以TensorFlow、PyTorch等作为后端框架进行计算。Keras的设计理念是用户友好和模块化,使得模型的构建和训练变得简单快捷。

这里我使用的是TensorFlow + Keras

二、TensorFlow-gpu环境配置

1. Anaconda安装

跟之前的教程一样的操作,这里放一个传送门即可,大家自行穿越。

2.Cuda和Cudnn的安装

要在TensorFlow中使用GPU,需要安装CUDA和cuDNN。听说过比特币挖矿机不?其实就是依赖显卡中的GPU。TensorFlow也有CPU版本,但是运行速度慢,不建议装。

CUDANVIDIA开发的一种并行计算平台和API。它允许开发人员使用NVIDIA的GPU进行通用计算。在我们的情况下,TensorFlow可以利用CUDA来有效地在GPU上执行深度学习计算。

cuDNN是CUDA深度神经网络库,是NVIDIA提供的一种GPU-accelerated库,用于深度学习。它包含一些针对深度神经网络的高性能原语(如卷积,池化等)。TensorFlow利用cuDNN来优化在GPU上执行的一些操作,从而提高计算效率。

请注意!!!这里需要特别注意硬件和软件的匹配问题!!!

(1)你的电脑显卡是否支持CUDA

(a)计算机右键->设备管理器->显示适配器,出来的就是你的显卡型号,比如我的是NVIDIA GeForce GTX 970显卡(献丑了,用了7年)

(b)上英伟达官网(传送门),看看你的显卡是不是在里面,是就可以用,第二列是计算力,比如我的是5.2,辣鸡了。

 

(2)查看显卡的Driver Version,用于选择适合的CUDA版本。

(a)打开终端,输入命令:

cd C:\Program Files\NVIDIA Corporation\NVSMI
nvidia-smi

可以看到Driver Version为516.40,这里我装了CUDA了,所以显示出版本号。

(b)根据Driver Version为516.40,对照下表,确定你的电脑硬件支持的最高CUDA版本,网址如下:传送门

可以看到哈,最高可以安装的是CUDA 11.8.x版本。

然后在这个网址,下载合适的CUDA安装即可,默认路径安装就好。网址如下:传送门

(3)根据CUDA版本选择TensorFlow版本和cuDNN版本。

(a)不同版本的TensorFlow需要不同版本的CUDA和cuDNN,这些信息可以在TensorFlow的官方网站上找到,网址如下:传送门

这就有点尴尬,CUDA最高只到11.2版本,那么我的11.7版本咋办,经过我测试,我这么配置:TensorFlow-2.6,CUDA 11.7,cuDNN 8.1可行。此外,TensorFlow-2.x自带Keras,不用再另外安装。

(b)安装cuDNN

打开Anconda终端,输入代码:

conda install cudnn=8.1

回车安装。

血泪史:当初我没选择版本,直接conda install cudnn,二话不说,干到了最新版本的cuDNN,然后悲剧了。

3.TensorFlow-gpu的安装

(1)创建新的环境

打开Anaconda Prompt,键入以下命令以创建一个新的环境,例如我们创建一个名为"tf2.6"的环境,同时指定Python版本为3.9(你可以根据需要选择其他版本):

conda create -n tf2.6 python=3.9

(2)激活新环境

创建新环境后,你需要激活这个环境,命令如下:

conda activate tf2.6

(3)安装TensorFlow-gpu

在新的环境中,你可以通过以下命令安装TensorFlow-gpu:

conda install tensorflow-gpu==2.6.0

这将自动为你安装最新版本的TensorFlow-gpu的2.6版本和所有必要的依赖项。

(3)验证TensorFlow-gpu

要验证TensorFlow-gpu是否安装成功,你可以打开Python并尝试导入tensorflow模块,然后检查其版本:

python #进入python程序
import tensorflow as tf #导入tensorflow
print(tf.__version__) #输出tensorflow的版本号

恭喜你,安装成功了!!!

4.如果安装失败

大概率是显卡、Anaconda、python、Cuda、Cudnn、Tensorflow-gpu/cpu以及Keras之间的爱恨情仇(版本)的问题,慢慢排查,慢慢尝试,总会成功的,毕竟我搞了好几天才行。

三、写在最后

我没说错吧,相比于单纯的ML,装个Anaconda和sklearn包就可以运行,深度学习的环境配置起来更复杂,不过琢磨几天一般也能搞定。最难的是,你得有一块好显卡,A100就算了,来个4090吧。

哈哈哈,开玩笑,按需配置。希望大家配置环境都顺利,下期有缘再见哈!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第36步 深度学习图像识别:TensorFlow-gpu环境配置 的相关文章

随机推荐

  • 今天发现rabbitMQ消息堆积

    发现有三十多万的消息堆积在10的queue里没有被消费 记录一下查看问题的步骤 1 jps 找出程序的PID 2 jstack PID 查看线程dump 发现rabbitMQ的consumer worker线程block住了 Thread
  • 转眼就来字节六个月了,真的不一样

    今天来分享一个学弟 也是我老乡 阿秀 他入职字节跳动 6 个月的感受 希望给向往大厂的小伙伴一点点信心和动力 一 过去 首先来回复下有些小伙伴对字节存在的疑问 1 字节 996 的生活长期来看没有啥意义 我觉得还是挺有意义的 因为见识到了自
  • 前后端分离总结(部分)

    本文内容转载于博客 前后端分离架构概述 https blog csdn net fuzhongmin05 article details 81591072 1 背景 前后端分离已成为互联网项目开发的业界标准使用方式 通过nginx tomc
  • Springboot中使用netty 实现 WebSocket 服务

    依赖
  • C语言:写文件

    C语言 写文件 在C语言中 我们可以使用标准库函数来创建 打开 写入和关闭文件 文件操作是处理数据的重要方面之一 它允许我们将数据永久保存在磁盘上 并在需要时进行读取和修改 本文将介绍如何在C语言中写入文件 并提供相应的源代码示例 首先 我
  • [Dynamics CRM]错误代码参考

    转载于 http it zhaozhao info archives 20266 0x80048472 One or more imports are not in completed state Imported records can
  • 【Darknet】模型隐藏的一种方法

    之前在一个公司实习的时候有个需求 说要把Darknet的模型隐藏起来 就是说提供给用户的只有dll 而cfg和weights文件不能直接给客户 不然就暴露商业机密了嘛 所以就研究了一下如何隐藏模型 主要参考这篇文章 具体原理咱也不是很懂 反
  • 微信小程序使用AES加密和解密

    前端请求后端接口进行参数加密处理 const CryptoJs require crypto js const defaultKey zoe nurse qazxr8 默认的key const defaultIv qwertyuiopasd
  • [性能测试]LR常见问题整理

    1 LR 脚本为空的解决方法 1 去掉ie设置中的第三方支持取消掉 2 在系统属性 高级 性能 数据执行保护中 添加loadrunner安装目录中的vugen exe文件 有可能是由于录制的URL地址采用的是localhost的问题 改成分
  • centos系统服务器脚本,CentOS使用脚本管理服务的详解

    1 使用工具 chkconfig 管理 etc rc d init d或 etc init d 目录下的服务启动脚本 要在服务启动脚本开头添加两行 chkconfig 2345 88 12 description XXXXXXXXX XXX
  • 群晖NAS报“发生网络错误。请检查DNS和网络设置”的解决方法

    如标题中所述 新买的群晖DNS 登录Synology账号 设置所谓的QuickConnect的时候就会报这种错误 尝试了一下 控制面板 网络 手动配置DNS服务器 填入 180 76 76 76 再进行类似如图所示的设置即可 呵呵 貌似这个
  • 可能是全网最清晰的KMP算法讲解

    字符串匹配 字符串A是否为字符串B的子串 如果是 出现在B的什么位置 这个问题就是字符串匹配问题 字符串A称为模式串 字符串B称为主串 那么 如何查找模式串在主串中的位置呢 暴力匹配 暴力匹配 顾名思义 是一种简单粗暴的匹配方法 从主串的第
  • ubuntu上安装微信

    一 下载安装Wine环境包 http archive ubuntukylin com software pool partner ukylin wine 70 6 3 25 amd64 deb 二 下载安装微信包 http archive
  • Oracle:修改表空间和数据文件的名称

    1 修改表空间名称 alter tablespace tablespace name1 rename to tablespace name2 2 修改数据文件名称 1 先将联机状态的需要修改的表空间设置为脱机状态 ALTER TABLESP
  • 解决Value '0000-00-00 ' can not be represented as java.sql.Timest

    在使用MySql 时 数据库中的字段类型是timestamp的 默认为0000 00 00 会发生异常 java sql SQLException Value 0000 00 00 can not be represented as jav
  • javascript画全年日历

    前些日子闲聊群里有人提了用js画全年日历的需求 趁闲暇时间画了个小demo 下面还是先上效果图吧 高亮显示的是今天的日期和标记要高亮显示的日期 也添加了点击事件的钩子 自己可以实现钩子函数 从而操作点击的日期值 下面还是先上dai 日历视图
  • Linux 系统 /var/log/journal/ 垃圾日志清理

    CentOS系统中有两个日志服务 分别是传统的 rsyslog 和 systemd journal systemd journald是一个改进型日志管理服务 可以收集来自内核 系统早期启动阶段的日志 系统守护进程在启动和运行中的标准输出和错
  • 第1章 Java基础(二)

    1 11 重写和重载的概念 难度 重点 白话解析 这道题它的重点不仅仅是在面试中 因为后续在做开发的时候会接触到大量的重写或重载 也正是因为他们 才实现了Java的多态特性 1 重写 好好理解下 就是本来父亲写好了一个方法 然后儿子觉得父亲
  • 你的Qt按钮可以加载Gif圆形的头像吗?

    先上效果 先看要求 我们首先要求 1 这是一个按钮 所以可以想到重写控件的基类一定是QPushButton 2 我们要求可以播放Gif图片 由此可想到 图片的加载肯定绕不开QMoive 3 头像是圆形的 猜想是不是可以通过样式表 或者重新p
  • 第36步 深度学习图像识别:TensorFlow-gpu环境配置

    基于WIN10的64位系统演示 一 写在前面 从这一期开始分享基于深度学习图像识别的学习笔记和代码 相比于之前的ML分类模型 图像识别的门槛会更高 包括硬件方面 代码复杂度和基础理论知识等 同样 首先把必要的深度学习框架 类似做ML分类 要