tensorflow-gpu安装(详解)

在这里插入图片描述

简介

TensorFlow(中文名:张量流):由Google开发的开源机器学习框架,广泛用于深度学习和机器学习任务。

TensorFlow特点:

  • 提供灵活的计算图模型:允许定义和执行各种复杂的数学运算和机器学习模型。
  • 支持深度学习
    • (1)内置预训练模型。如:卷积神经网络(CNNs)、循环神经网络(RNNs)、自编码器等。
    • (2)支持构建和训练深度神经网络模型
  • 支持自动求导(梯度计算):使得梯度下降等优化算法的实现更加容易。
  • 支持多设备和平台:包括CPU、GPU和TPU(Tensor Processing Unit)
  • 开源:可以自由使用、修改和开发它,而且有一个庞大的社区支持。
  • 丰富的生态系统:如:高级API(Keras)、工具(TensorBoard)、模型仓库(TensorFlow Hub),以及大量的扩展库和插件。
  • 应用广泛: 图像识别、自然语言处理、语音识别、强化学习等。

TensorFlow的2.x版本引入了许多改进,使其更加易用和直观。

  • Keras曾经是一个独立的深度学习框架,而TensorFlow 2.x版本将Keras整合成为了TensorFlow的一个官方高级API。可以直接通过 TensorFlow 来访问 Keras 功能,而不需要额外安装 Keras。
    • (1)导入tensorflow:import tensorflow as tf
    • (2)导入keras:from tensorflow import keras

一、环境配置

  1. 【深度学习环境配置】Anaconda +Pycharm + CUDA +cuDNN + Pytorch + Opencv(资源已上传)
  2. 【Python虚拟环境】创建 + 激活 + 安装 + 查看 + 退出 + 删除 + 复制 + 导出 + 导入

二、TensorFlow(CPU + GPU)安装

2.1、版本对应关系:TensorFlow + Python(CUDA + cuDNN)

目前,旧版 TensorFlow1.x 仍然广泛出现在顶会或顶刊的开源项目中。

  • 旧版 TensorFlow1.x:CPU 和 GPU 软件包是分开的
    • tensorflow==1.15:仅支持 CPU 的版本
    • tensorflow-gpu==1.15:仅支持 GPU 的版本(适用于 Ubuntu 和 Windows)
    • 备注: tensorflow==1.15 是 TensorFlow 1.x 的最终版本。
  • 新版 TensorFlow2.x:同时支持 CPU 和 GPU(适用于 Ubuntu 和 Windows)
    • 注意:必须使用 Python 3.6-3.9 和 pip 19.0 及更高版本,才能安装 TensorFlow 2。

TensorFlow官网:经过测试的构建配置(版本必须对应)
在这里插入图片描述

2.2、安装

方法一、镜像安装

  • 新版 TensorFlow2.xpip install tensorflow -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

  • 旧版 TensorFlow1.x
    在同一台计算机上,不建议同时安装TensorFlow的CPU版本和GPU版本。

    • TensorFlow CPU 安装(镜像)pip install tensorflow==1.15 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
    • TensorFlow GPU 安装(镜像)pip install tensorflow_gpu==1.15 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
  • 若不使用镜像:(1)网络问题而安装失败;(2)耗时长;

  • 若不指定版本:(1)pip 会自动检测当前使用的 Python 版本;(2)自动安装与 Python 版本兼容的最新 TensorFlow 版本。

若TensorFlow GPU 1.15安装失败,则自动安装TensorFlow CPU 1.15:pip install tensorflow_gpu==1.15 || pip install tensorflow==1.15

方法二、轮子安装

🧀TensorFlow官网
(1)🧀tensorflow-gpu版本关系
(2)🧀tensorflow-gpu轮子下载(阿里云镜像源)
(3)🧀tensorflow-gpu轮子安装:pip install tensorflow_gpu-1.15.0-cp36-cp36m-win_amd64.whl

(1)轮子安装(.whl文件)是不需要联网的,因为轮子文件中已经包含了所需的依赖关系。
(2)翻墙状态,无法安装。—— 异常提示:网络设置或SSL配置问题。

2.3、使用 conda 安装 CUDA + cuDNN + tensorflow_gpu==1.15

Conda 安装 CUDA 和 cuDNN

  • 使用 Conda 在指定的虚拟环境中安装 CUDA 和 cuDNN,可以方便地管理它们的依赖。
  • 然而,Conda 通常只安装 CUDA 和 cuDNN 的运行时库,而不是完整的开发环境。
  • 若需要 CUDA 编译器(如:nvcc)或完整的开发工具(如:编译自定义 CUDA 内核、构建 TensorFlow 源代码、编译和链接其他 GPU 库),仍需从 NVIDIA 官网直接安装 CUDA。
# conda不支持cudnn=7.4版本
# conda search cuda  # 列出所有可用的 cuda  版本以及它们的详细信息
# conda search cudnn  # 列出所有可用的 cuDNN 版本以及它们的详细信息
"""
conda create --name tensorflow36 -y
conda activate tensorflow36
conda install python=3.6 -y
conda install cudatoolkit=10.0 -y
conda install cudnn=7.6 -y
pip install tensorflow_gpu==1.15 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
"""

安装结束之后,PyCharm需关闭后重新启动。

import tensorflow as tf


def check_tensorflow_gpu():
    print("TensorFlow 版本:", tf.__version__)
    if tf.test.is_gpu_available():
        print("GPU is available")
    else:
        print("GPU is not available, using CPU")

    # 测试 GPU 上的简单计算
    try:
        with tf.Session() as sess:
            with tf.device('/GPU:0'):
                a = tf.constant([1.0, 2.0, 3.0])
                b = tf.constant([4.0, 5.0, 6.0])
                c = a + b
                result = sess.run(c)
                print("GPU 测试计算结果:", result)
    except RuntimeError as e:
        print(f"GPU 计算错误: {e}")


if __name__ == "__main__":
    check_tensorflow_gpu()

"""
TensorFlow 版本: 1.15.0
GPU is available
GPU 测试计算结果: [5. 7. 9.]
"""

三、参数配置

3.1、检查 TensorFlow 版本号(不区分设备类型)

import tensorflow as tf

print("TensorFlow 版本:", tf.__version__)

# (若未安装)ModuleNotFoundError: No module named 'tensorflow'
# (若已安装)TensorFlow 版本号: 2.5.0
# 若同时安装了CPU+GPU版本的TensorFlow,则默认打印TensorFlow-GPU版本号(实测结果)。

3.2、检查是否支持TensorFlow - GPU

import tensorflow as tf

if tf.test.is_gpu_available():
    print("GPU is available")
else:
    print("GPU is not available, using CPU")

3.3、获取 TensorFlow 支持的所有物理设备

import tensorflow as tf

# 在当前系统中,获取 TensorFlow 支持的所有物理设备
devices = tf.config.experimental.list_physical_devices()
# 打印每个设备的信息(类型 + 名称)
for device in devices:
    print(device, "设备类型:", device.device_type, "设备名称:", device.name)
"""
PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU') 设备类型: CPU 设备名称: /physical_device:CPU:0
PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU') 设备类型: GPU 设备名称: /physical_device:GPU:0
"""

3.4、设置 TensorFlow 的设备类型(CPU + GPU + TPU)

(1)若GPU版本存在,TensorFlow将默认使用GPU;
(2)否则,TensorFlow会自动切换到CPU;

3.4.1、(方法一)选择设备类型:使用环境变量 CUDA_VISIBLE_DEVICES

import os

# (1)设置环境变量 CUDA_VISIBLE_DEVICES
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1,2'

# (2)测试 os.environ['CUDA_VISIBLE_DEVICES']
try:
    cuda_visible_devices = os.environ['CUDA_VISIBLE_DEVICES']
    print("os.environ['CUDA_VISIBLE_DEVICES']     =", cuda_visible_devices)
except KeyError:
    print("环境变量 CUDA_VISIBLE_DEVICES 未设置")

# (3)测试 os.environ.get('CUDA_VISIBLE_DEVICES')
cuda_visible_devices_get = os.environ.get('CUDA_VISIBLE_DEVICES')
if cuda_visible_devices_get is not None:
    print("os.environ.get('CUDA_VISIBLE_DEVICES') =", cuda_visible_devices_get)
else:
    print("环境变量 CUDA_VISIBLE_DEVICES 未设置")

"""###########################################################################################################
# 函数功能:获取环境变量 CUDA_VISIBLE_DEVICES 的值。
# 函数说明:os.environ['CUDA_VISIBLE_DEVICES']
#           CPU:        os.environ['CUDA_VISIBLE_DEVICES'] = '-1'       # 表示禁用所有GPU设备,TensorFlow使用CPU设备。
#           GPU:        os.environ['CUDA_VISIBLE_DEVICES'] = '0'        # 表示(单GPU)TensorFlow可以看到并使用的GPU设备的编号: 0。
#                       os.environ['CUDA_VISIBLE_DEVICES'] = '0,1,2'    # 表示(多GPU)TensorFlow可以看到并使用的GPU设备的编号: 0、1、2。
# 返回一个包含指定设备编号的字符串,表示 TensorFlow 可以看到的 GPU 设备列表。
###########################################################################################################"""

3.4.2、(方法二)选择设备类型:使用环境变量 set_visible_devices

import tensorflow as tf

# 获取CPU和GPU设备列表
devices = tf.config.experimental.list_physical_devices('CPU') + tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_visible_devices(devices[0], 'CPU')  # 设置CPU设备为可见
tf.config.experimental.set_visible_devices(devices[1], 'GPU')  # 设置GPU设备为可见

"""################################################################
# 函数功能:用于设置指定类型的物理设备为可见状态,从而选择使用的设备。
# 函数说明:tf.config.experimental.set_visible_devices(devices, device_type)
# 参数说明:
#         devices         要设置为可见的物理设备列表。
#         device_type:    要设置为可见的设备类型。可以是 'CPU'、'GPU' 或者 'TPU'。
################################################################"""

"""################################################################
# 函数功能:获取系统中的物理设备列表,可以指定设备类型。
# 函数说明:tf.config.experimental.list_physical_devices(device)
# 参数说明:
#         device      设备类型。
#             (1)若不输入,则默认列举所有设备
#             (2)若输入指定类型,则提取指定类型的所有设备。如:'GPU'、'CPU'、'TPU'。
################################################################"""

3.5、TensorFlow:按需分配GPU内存,而不是一次性分配整个GPU内存。

import tensorflow as tf

gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:  # 检查是否至少存在一个GPU设备。
    try:
        for gpu in gpus:
            tf.config.experimental.set_memory_growth(gpu, True)
    except RuntimeError as e:
        print(e)

"""################################################################
# 函数功能:用于配置 GPU 内存管理。
# 函数说明:tf.config.experimental.set_memory_growth(device, enable)
# 参数说明:
#         device      要配置的物理设备对象(如:'GPU'、'CPU'、'TPU')
#         enable      内存增长模式的启用状态(bool类型)。
#                     (1)若为True, 启用按需分配内存的模式。即 TensorFlow 将在需要时动态增加 GPU 内存,而不是一次性分配整个 GPU 的内存空间。
#                     (2)若为False,禁用按需分配内存的模式。即 TensorFlow 会一次性分配整个 GPU 的内存空间。
################################################################"""
  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖墩会武术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值