keras在GPU环境下配置,conda虚拟环境并安装TensorFlow,cudatoolkit,cudann和jupyter等

news2024/9/17 7:22:10

前言:要有版本意识

在我个人的多次配置环境过程中,很多时候失败或者后序出现问题,往往都是版本不匹配的问题。所以在本次安装中,提前重点了解了下版本匹配情况。各位千万不要跳过这部分,因为这不仅是基础知识了解的过程,也很可能帮我们后期省略很多麻烦,所谓磨刀不误砍柴工,大抵就是如此。
我们常见有两种了解方式:
第一种,官网查看:
例如:在TensorFlow官网的安装目录下,就列举了很多环境配置情况:
在这里插入图片描述
链接网址如下:TensorFlow在window下的配置
我们直接从官网上看版本配置即可。

第二种方法是使用conda命令查询:
例如,我发现官网那里没有cudatoolkit的版本,一般还是建议安装cudatoolkit的,我们使用命令:conda search cudatoolkit --info就会看到cudatoolkit的版本
在这里插入图片描述
我们可以继续下拉查看:
在这里插入图片描述
发现后面版本都有constraints - _cuda>=xx.x版本的信息,所以我们通过这种命令,大概就能了解我们需要安装什么样的cudatoolkit包。

再举个例子:
我之前说我本地的cuda是12.0,而官网安装配置里面最高cuda版本是11.2。一般来说cuda是新的话,加上python是3.8,我们都可以直接默认下载安装最新的cudatoolkit,cudnn等包。不过我们可以看看cudnn版本:
命令:conda search cudnn --info
在这里插入图片描述
继续下拉:
在这里插入图片描述
我们发现不仅有相关依赖的cudatoolkit版本,也有cuda版本。所以说通过查看命令,我们就能通过自己的cuda版本,便能查找到需要配置的其他包的版本。将我们出现包版本不匹配的问题降低。

1.查看自身电脑显卡的cuda版本

命令:nvidia-smi
在这里插入图片描述
由于我的cuda是12.0,算很新的那种,然后python版本是3.8,即python也不是老版本。所以后序的配置一般默认即可,毕竟默认通常都是下载最新的包版本。不过,我通过上面例举的命令查看cudnn后,发现最新的cudnn版本都是基于cuda12.0的,这样我使用默认安装就更放心了。cudatoolkit等也是同理。
在这里插入图片描述

2.conda创建一个专门给keras用的环境

conda的好处是可以创建多个虚拟环境,进行隔离。毕竟谁也不想自己的环境里面乱糟糟的,可能还会有很多冲突问题。
在base环境下创建一个环境,格式如下:conda create -n 环境名称 python=版本
在这里插入图片描述
使用conda activatet 环境名称激活
在这里插入图片描述

2.下载cudatoolkit,cudann包

注意使用镜像,往往会快点,不使用镜像可能会下载失败或者很慢。
格式如下:

conda install cudatoolkit=xx.x -c https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/win-64/

conda install cudnn=xx.x -c https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/win-64/

在这里插入图片描述

在这里插入图片描述

3.安装TensorFlow

命令:pip install tensorflow_gpu==x.x.x -i https://pypi.tuna.tsinghua.edu.cn/simple/

TensorFlow有查看信息的命令,不过查看出来的内容很复杂,不如官网直接,
查看信息:

anaconda search -t conda tensorflow

4.安装keras

注意,TensorFlow2.0以上版本内置的keras,所以TensorFlow2.0以上版本的可以不用安装keras
安装keras:pip install Keras==x.x.x

5.安装jupyter

命令:conda install jupyter
`

6.添加kernel

命令:

conda install -c anaconda ipykernel

python -m ipykernel install --user --name=kerasgpu --display-name kerasgpu
#格式含义:
#python -m ipykernel install --user --name=内核真名 --display-name 在内核选择时显示的内核假名

在这里插入图片描述

在这里插入图片描述
启动jupyter命令:jupyter notebook #启动jupyter
启动后

在这里插入图片描述
在这里插入图片描述

7.其他

验证是否可以使用gpu:

import tensorflow as tf
tf.test.is_gpu_available()

在这里插入图片描述
出现True即可。
由于后期该命令可能弃用,所以新命令:

import tensorflow as tf
tf.config.list_physical_devices('GPU')

在这里插入图片描述
出现device_type='GPU’即可

查看已经安装的包和版本命令,该命令非常有用,尤其是出现版本冲突的时候:


conda list  

解决conda环境安装包报错:The following packages are not available from current channels

8.后记

在启动jupyter notebook后运行出现一些问题:
1.TypeError: Descriptors cannot not 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).

该问题解决方法,已经在描述问题给出了。降低protobuf版本到3.19.0及以上。
你可以使用conda list查看当前环境下的包以及版本,找到protobuf的,我当时是5.xx.x版本,然后
卸载pip uninstall protobuf 再安装:pip install protobuf==3.19.0
不过此时又出现error,说要求3.19.6及以上版本,那就修改一下版本就行

2.ImportError: cannot import name ‘dtensor’ from ‘tensorflow.compat.v2.experimental’ (E:\condaenvs\kerasgpu\lib\site-packages\tensorflow_api\v2\compat\v2\experimental_init_.py)

在这里插入图片描述
这是再次启动jupyter后出现的。这个问题是keras和TensorFlow版本不匹配导致的。我之前说TensorFlow2.0以上版本内置keras,但是貌似内置的也会出现不匹配问题。
可以使用conda list命令查询下包和版本,例如我查看到自己的TensorFlow是2.6.0,但是keras是2.15.0版本,所以keras版本太高了。
命令:pip uninstall keras卸载pip install keras==版本号这里安装的版本和TensorFlow的版本一样即可

3.Kernel Restarting The kernel for xxx appears to have died. It will restart automatically或者是Could not locate zlibwapi.dll. Please make sure it is in your library path
参考我写的这个博客:Kernel Restarting The kernel for xxx appears to have died. It will restart automatically

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1957827.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

君子学习,是为了修养自己

98天 保护自己最好的方式: 恢复良知的明和诚,就能照见万物,能常觉、常照,任何东西都无所遁形。(相信直觉) 君子学习,是为了修养自己。 从不担忧别人会欺骗自己,只是永远不欺骗自己的…

docker笔记7-dockerfile

docker笔记7-dockerfile 一、dockerfile介绍二、dockerfile指令三、构建自己的镜像 一、dockerfile介绍 Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。 以下是常用的 Dockerfile 关键字的完整列表和说明: 二、docker…

实时捕获数据库变更

1.CDC概述 CDC 的全称是 Change Data Capture ,在广义的概念上,只要能捕获数据变更的技术,我们都可以称为 CDC 。我们目前通常描述的CDC 技术主要面向数据库的变更,是一种用于捕获数据库中数据变更的技术,CDC 技术应用…

C语言进阶 10. 字符串

C语言进阶 10. 字符串 文章目录 C语言进阶 10. 字符串10.1. 字符串10.2. 字符串变量10.3. 字符串输入输出10.4. 字符串数组10.5. 单字符输入输出10.6. 字符串函数strlen()10.7. 字符串函数strc()10.8. 字符串函数strcpy()10.9. 字符串搜索函数10.10. PAT10-0. 说反话 (20)10-1.…

RK3568平台(input篇)input数据上报分析

一.input设置事件类型 __set_bit 是一个位操作函数,用于设置一个位图中的特定位,例如可以通过下面的代码将 输入设备设置为支持按键事件: __set_bit(EV_KEY,myinput_dev->evbit) 第一位为设置设置事件类型。 第二位为输入设备的能力 和…

6 网络

6 网络 1、概念2 IP地址3、套接字4、TCP协议4.1 TCP协议的基本特征4.2 建立连接4.4 终止连接4.5 编程模型 5、UDP协议5.1 UDP协议的基本特性5.2 常用函数5.3 UDP通信模型 6、域名解析 1、概念 计算机网络是实现资源共享和信息传递的计算机系统 ISO/OSI网络协议模型 TCP/IP协…

应急响应靶场

靶场搭建 靶场环境搭建:首先确定目标靶机的IP地址: 端口探测:发现只开放了22号端口 尝试利用hydra进行爆破: 成功找到了密码。ssh远程登录之后,添加后门账号: msfvenom生成msf的木马: 利用python快速搭建h…

代码随想录 day 25 回溯

第七章 回溯算法 part04 491.递增子序列 本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。 https://programmercarl.com/0491.%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.html 视频讲解:https://www.bilibili.com/vi…

培训第十六天(web服务apache与nginx)

上午 静态资源 根据开发者保存在项目资源目录中的路径访问静态资源html 图片 js css 音乐 视频 f12,开发者工具,网络 1、web基本概念 web服务器(web server):也称HTTP服务器(HTTP server)&am…

解决Windows密码丢失问题:详细指南

解决Windows密码丢失问题:详细指南 引言 最近因为某些工作缘故,接触到windows比较频繁,特此记录一下 当下,计算机安全是每个人都不能忽视的重要问题。然而,有时可能因为忘记密码而无法访问自己的Windows系统&#xf…

NAS、SAN 与 DAS 的比较与应用场景

文章目录 1. NAS(网络附加存储)定义特点实现成本:适用场景 2. SAN(存储区域网络)定义特点实现成本:适用场景 3. DAS(直接附加存储)定义特点实现成本:适用场景 区别总结结…

基于tkinter的学生信息管理系统之登录界面和主界面菜单设计

目录 一、tkinter的介绍 二、登陆界面的设计 1、登陆界面完整代码 2、部分代码讲解 3、登录的数据模型设计 4、效果展示 三、学生主界面菜单设计 1、学生主界面菜单设计完整代码 2、 部分代码讲解 3、效果展示 四、数据库的模型设计 欢迎大家进来学习和支持&#xff01…

文件操作相关的精讲

目录: 思维导图 一. 文件定义 二. 文件的打开和关闭 三. 文件的顺序读写操作 四. 文件的随机读写操作 五. 文本文件和二进制文件 六. 文件读取结束的判断 七.文件缓冲区 思维导图: 一. 文件定义 1.文件定义 C语言中,文件是指一组相…

Chapter 18 Python异常

欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能! 文章目录 前言一、什么是异常二、捕获异常三、异常的传递 前言 在Python中,异常是一种特定的对象,能够在程序运行过程中被抛出和处理。有效地管理异常不仅可以…

Spark+实例解读

第一部分 Spark入门 学习教程:Spark 教程 | Spark 教程 Spark 集成了许多大数据工具,例如 Spark 可以处理任何 Hadoop 数据源,也能在 Hadoop 集群上执行。大数据业内有个共识认为,Spark 只是Hadoop MapReduce 的扩展&#xff08…

精准客户从何而来?一招让你的客户源源不断!

你们是否还在为找不到精准客户而烦恼? 今天,我要分享一招非常实用的技巧,让你也能拥有源源不断的客源! 首先,我们需要深入了解自己的目标客户。他们是谁?他们的需求是什么?并利用大数据洞察客…

Cocos Creator文档学习记录

Cocos Creator文档学习记录 一、什么是Cocos Creator 官方文档链接:Hello World | Cocos Creator 百度百科:Cocos Creator_百度百科 Cocos Creator包括开发和调试、商业化 SDK 的集成、多平台发布、测试、上线这一整套工作流程,可多次的迭…

【前端 19】使用Vue-CLI脚手架构建Vue2项目

使用Vue CLI构建Vue 2项目 引言 Vue.js 是一个构建用户界面的渐进式JavaScript框架,以其轻量级和易用性受到前端开发者的广泛喜爱。Vue CLI(Vue Command Line Interface)是一个基于Vue.js进行快速开发的完整系统,提供了零配置的项…

Amazon Bedrock + Amazon DynamoDB 数据设计与建模

一、Amazon DynamoDB简介 在当今数字化转型的浪潮中,企业对数据处理能力的需求日益增长,为了应对大规模数据和高并发访问的挑战,选择一款合适的数据库解决方案变得尤为重要。 Amazon DynamoDB,作为亚马逊云科技提供的一种完全托…