Ubuntu配置深度学习环境(TensorFlow和PyTorch)
文章目录
- 一、CUDA安装
- 1.1 安装显卡驱动
- 1.2 CUDA安装
- 1.3 安装cuDNN
- 二、Anaconda安装
- 三、安装TensorFlow和pyTorch
- 3.1 安装pyTorch
- 3.2 安装TensorFlow2
- 四、安装pyCharm
- 4.1 pyCharm的安装
- 4.2 关联anaconda的Python解释器
- 五、VScode配置anaconda的Python虚拟环境
前言:最好是去这里看一下TensorFlow对应的CUDA版本,按照要求的版本安装,我是因为有其他程序必须要11.6才没有按照这个要求安装,但是安装流程是一样的

一、CUDA安装
1.1 安装显卡驱动
查看推荐显卡
ubuntu-drivers devices

安装recommend推荐显卡版本,这里推荐的是535版本
sudo apt-get install nvidia-driver-535
要选择版本不然会自动更新内核。 但是我安装535会黑屏,只能安装了510,由于是刚安装的系统,更新了内核也没太大的影响,另外安装版本太低的话也不行,因为下面安装CUDA要求最小版本
1.2 CUDA安装
使用手动安装方法:
nvidia-smi
查看显卡驱动支持最高CUDA版本是12.1, 到cuda-toolkit-archive,选择需要的CUDA版本下载(你需要的与TensorFlow匹配的版本),如下图,选择runfile(local),并使用生成的指令进行下载和安装




回车取消安装显卡驱动,然后选择最后的安装:


安装成功之后环境配置,在.bashrc文件末尾添加环境变量:
sudo gedit ~/.bashrc
# 添加以下内容:
export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
或者终端输入以下命令添加:
# Taken from: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions
echo 'export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
验证是否安装成功
nvcc -V

1.3 安装cuDNN
成功安装完CUDA之后,官网下载CUDA对应版本的cuDNN,前往cudnn-archive(需要注册账号),这里我选择的是8.9.4版本的cuDNN(Local Installer for Linux x86_64 (Tar)),对应11.x版本的CUDA(找到与你的CUDA对应的版本):

下载完成后,在文件所在目录解压缩,注意自己下载文件的名称
tar -xvf cudnn-linux-x86_64-8.9.4.25_cuda11-archive.tar.xz
解压缩完成后,将部分文件复制转移/usr/local(注意:自己下载文件的名称, cudnn8.0以上会将版本信息更新到cudnn_version.h文件中,也需要将这个文件复制,否则验证的时候会没有反应) :
cd cudnn-linux-x86_64-8.9.4.25_cuda11-archive
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
sudo cp include/cudnn_version.h /usr/local/cuda/include/
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 #验证
二、Anaconda安装
进入Anaconda官网,点击Download下载(Anaconda会根据访问网页所使用的系统下载对应的版本,比如我这里下载的是Anaconda3-2023.03-Linux-x86_64.sh)

安装Anaconda
bash Anaconda3-2023.03-Linux-x86_64.sh
(1)查看安装协议,一直按Enter直到出现 Do you accept the license terms? [yes|no] ,输入yes即可继续安装;
(2)输入yes后会提示确认安装位置,这里点击Enter,默认即可;
(3)初始化Anaconda,这一步只需要根据提示输入yes即可;


重启终端进入conda基础环境,可以检查一下在此环境下的python位置和版本:

如果希望 conda 的基础环境在启动终端时不被激活,将 auto_activate_base 参数设置为 false:
conda config --set auto_activate_base false
后面想要再进入conda的base环境,只需要使用conda指令激活:
conda activate base

conda常用命令:
- 创建conda环境
conda create --name 环境名 包名(多个包名用空格分隔)
# 例如:conda create --name my_env python=3.7 numpy pandas scipy
- 激活(切换)conda环境
conda activate 环境名
# 例如:conda activate bas
- 显示已创建的conda环境
conda info --envs
# 或者:conda info -e,亦或者conda env list
- 删除指定的conda环境,
# 通过环境名删除
conda remove --name 要删除的环境名 --all# 通过指定环境文件位置删除(这个方法可以删除不同位置的同名环境)
conda remove -p 要删除的环境所在位置 --all
# 例如:conda remove -p /home/zard/anaconda3/envs/MaskRCNN --all
三、安装TensorFlow和pyTorch
3.1 安装pyTorch
进入pyTorch官网(https://pytorch.org/),往下拉,选择你的环境生成安装命令:

复制安装命令(我改成了11.6):
conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia

输入y安装(可能需要科学上网):

测试是否能够使用:
ipythonimport torch
torch.cuda.is_availbale()
3.2 安装TensorFlow2
# 创建一个虚拟环境
conda create -n tensorflow-gpu python=3.7
# 激活环境
conda activate tensorflow-gpupip install ipython
pip install tensorflow -U

注意不要安装tensorflow-gpu,会报以下错误,根据提示消息这时候安装tensorflow也是可以使用GPU的。
两种方法都可以让你的 TensorFlow 安装使用 GPU 加速(事实上,自 TensorFlow 2.1 版本开始,两个包在功能上基本相同),具体来说:
- 使用
pip install --upgrade tensorflow安装 TensorFlow 时,TensorFlow 应该能够自动检测和使用可用的 GPU 进行加速,前提是您的系统满足了相关的 GPU 驱动程序、CUDA 工具包和 cuDNN 库的要求。这是因为 TensorFlow 是一个通用框架,它可以在 CPU 和 GPU 上运行,但需要正确的配置和依赖项来利用 GPU。 - 使用
pip install --upgrade tensorflow-gpu安装 TensorFlow-GPU 版本时,它已经专门配置为利用 GPU 加速,无需额外的配置。
无论选择哪种方法,只要满足了 GPU 驱动程序、CUDA 工具包和 cuDNN 库的要求,TensorFlow 都应该能够正确地使用 GPU 进行加速。

可以通过检查可用的 GPU 数量来验证是否已启用 GPU 加速:
import tensorflow as tf
tf.test.is_gpu_available()
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))

四、安装pyCharm
4.1 pyCharm的安装
进入官网(https://www.jetbrains.com.cn/en-us/pycharm/)下载pycharm

点击下载,往下翻,下载Community版本

下载完成后解压,进入bin目录,运行.sh文件
cd pycharm-community-2023.2.1/bin/
sh pycharm.sh


界面启动后,在打开的Pycharm软件界面左下角,点击设置图标,选择Create Deasktop Entry。关闭Pycharm,点击左下角显示应用程序,找到Pycharm,即可开始使用
点击进入plugins,选择Marketplace,搜索chinese,找到中文语言包(图标上有个“汉”字)进行安装,安装好后重启pycharm即可

4.2 关联anaconda的Python解释器
创建新项目之后,打开设置,选择python解释器:

添加python解释器,选择Conda环境,选择我们之前创建的虚拟环境:

可以看到我们安装的库已经有了


五、VScode配置anaconda的Python虚拟环境
实际上,我更习惯使用VScode,其简洁方便,我在使用Pycharm时总是遇到卡死的情况,并且字体,主题等等令人不爽,下面使用VScode配置anaconda的Python虚拟环境
首先我们要知道虚拟环境的python解释器位置,它位于#{YOUHOME}/anaconda3/envs/#{YOUEVN}/bin/python,例如我上面创建的虚拟环境:

然后在VScode左下角的设置中搜索python path,找到解释器路径设置,填入虚拟环境的解释器:

接下来就可以愉快使用啦(按F5运行哦):

相关文章:
Ubuntu配置深度学习环境(TensorFlow和PyTorch)
文章目录 一、CUDA安装1.1 安装显卡驱动1.2 CUDA安装1.3 安装cuDNN 二、Anaconda安装三、安装TensorFlow和pyTorch3.1 安装pyTorch3.2 安装TensorFlow2 四、安装pyCharm4.1 pyCharm的安装4.2 关联anaconda的Python解释器 五、VScode配置anaconda的Python虚拟环境 前言ÿ…...
【产品经理】国内企业服务SAAS平台的生存与发展
SaaS在国外发展的比较成熟,甚至已经成为了主流,但在国内这几年才掀起热潮;企业服务SaaS平台在少部分行业发展较快,大部分行业在国内还处于起步、探索阶段;SaaS将如何再国内生存和发展? 在企业服务行业做了五…...
【vue 首屏加载优化】
Vue 首屏加载优化指的是通过一系列的技术手段,尽可能地缩短首屏(即页面中可见的部分)的加载时间,提高用户体验。 以下是一些常见的 Vue 首屏加载优化技巧: 使用 Vue SSR(服务端渲染)࿱…...
docker--redis容器部署及与SpringBoot整合-I
文章目录 1. 容器化部署docker2. 如何与SpringBoot集成2.1. 引入依赖2.2. 添加配置信息2.3. 测试类2.4. 内置的Spring Beansredis 主流客户端比较redissonlettucejedis参考1. 容器化部署docker 拉取镜像创建数据目录data 及 配置目录conf创建配置文件redis.conf启动redis容器进…...
力扣 -- 518. 零钱兑换 II(完全背包问题)
解题步骤: 参考代码: 未优化代码: class Solution { public:int change(int amount, vector<int>& coins) {int ncoins.size();//多开一行,多开一列vector<vector<int>> dp(n1,vector<int>(amount1…...
一文搞懂UART通信协议
目录 1、UART简介 2、UART特性 3、UART协议帧 3.1、起始位 3.2、数据位 3.3、奇偶校验位 3.4、停止位 4、UART通信步骤 1、UART简介 UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种双向、串行、异步的通信…...
【算法|动态规划No.7】leetcode300. 最长递增子序列
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…...
LeetCode 54 螺旋矩阵
先贴代码 class Solution {public int[][] generateMatrix(int n) {int left 0;int right n-1;int up 0;int down n-1;int[][] result new int[n][n];int number 0;while(left < right && up < down) {for(int ileft;i<right;i) {number;result[up]…...
OpenCV 概念、整体架构、各模块主要功能
文章目录 1. OpenCV 概念2 OpenCV主要模块3 各模块 详细介绍3.1 calib3d 标定3.2 core 核心功能模块3.4 features2d 二维特征3.5 flann 快速近似近邻算法库3.7 highgui 高级图形用户界面3.9 imgproc 图像处理模块3.10 ml 机器学习模块3.11 objdetect 目标检测模块3.12 photo 数…...
组合数与莫队——组合数前缀和
用莫队求组合数是一种常见套路 莫队求 S ( n , m ) ∑ i 0 m ( n i ) S(n,m)\sum_{i0}^m\binom n i S(n,m)∑i0m(in) S ( n , m 1 ) S(n,m1) S(n,m1) 直接做个差,然后就相当于加上 ( n i 1 ) \binom n {i1} (i1n) 求 S ( n 1 , m ) S(n1,m) S(n1,m)…...
stm32之雨滴传感器使用记录
一、简介 雨滴传感器、烟雾传感器(MQ2)、轨迹传感器、干黄管等的原理都类似,都是将检测到的信号通过LM393进行处理之后再输出,可以输出数字信号DO(0和1)和模拟信号A0。 雨滴传感器在正常情况下是AO输出的是…...
华硕平板k013me176cx线刷方法
1.下载adb刷机工具, 或者刷机精灵 2.下载刷机rom包 华硕asus k013 me176cx rom固件刷机包-CSDN博客 3.平板进入刷机界面 进入方法参考: ASUS (k013) ME176CX不进入系统恢复出厂设置的方法-CSDN博客 4.解压ME176C-CN-3_2_23_182.zip,把UL-K013-CN-3.2.…...
C#停车场管理系统
目录 一、绪论1.1内容简介及意义1.2开发工具及技术介绍 二、总体设计2.1系统总体架构2.2登录模块总体设计2.3主界面模块总体设计2.4停车证管理模块总体设计2.5停车位管理模块总体设计2.6员工管理模块总体设计2.7其他模块总体设计 三、详细设计3.1登录模块设计3.2主界面模块设计…...
C++:stl:stack、queue、priority_queue介绍及模拟实现和容量适配器deque介绍
本文主要介绍c中stl的栈、队列和优先级队列并对其模拟实现,对deque进行一定介绍并在栈和队列的模拟实现中使用。 目录 一、stack的介绍和使用 1.stack的介绍 2.stack的使用 3.stack的模拟实现 二、queue的介绍和使用 1.queue的介绍 2.queue的使用 3.queue的…...
【Java】面向对象程序设计 课程笔记 面向对象基础
🚀Write In Front🚀 📝个人主页:令夏二十三 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:Java 💬总结:希望你看完之后,能对你有…...
Hive【Hive(五)函数-高级聚合函数、炸裂函数】
高级聚合函数 多进一出(多行输入,一个输出) 普通聚合函数:count、sum ... 1)collect_list():收集并形成 list 集合,结果不去重 select sex,collect_list(job) from e…...
zabbix(二)
文章目录 1. zabbix自定义监控项【配置】2. zabbix自定义监控项【传参】3. zabbix自定义触发器4. zabbix邮件告警4. zabbix企业微信告警 1. zabbix自定义监控项【配置】 目前有主机zabbix-server: 10.0.0.10 zabbix-slave: 10.0.0.11 zabbix监控的内容,想平滑转移到…...
容器安全检测工具KubeHound使用
前言 Kubernetes集群攻击路径AES工具 安装 下载kubehound git clone https://github.com/DataDog/KubeHound.git 安装docker compose插件 Docker compose插件安装_信安成长日记的博客-CSDN博客 启动kubehound后端服务 即要开大内存,不然db起不来,…...
机器学习笔记 - 基于强化学习的贪吃蛇玩游戏
一、关于深度强化学习 如果不了解深度强化学习的一般流程的可以考虑看一下下面的链接。因为这里的示例因为在PyTorch 之上实现深度强化学习算法。 机器学习笔记 - Deep Q-Learning算法概览深度Q学习是一种强化学习算法,它使用深度神经网络来逼近Q函数,用于确定在给定状态下采…...
C++_pen_类
类的成员函数 构造函数析构函数普通成员函数 构造函数与析构函数 #include <stdio.h> class STU{ public:STU(){printf("STU\n");}STU(int id){printf("STU(int id)\n");}~STU(){printf("STU Bye!!!\n");} };int main(int argc, char c…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
