TensorFlow2-新加坡龙良曲

# TensorFlow2.0简介

B站最完整版:深度学习与TensorFlow2入门实战-龙良曲人工智能精品课程

  • 发展历程

    • 2015.9发布0.1版本。
    • 2017.2发布1.0版本。
    • 2019春发布2.0版本。
  • 优点

    • 简洁:通过清理废弃的API和减少重复来简化API。
    • 易用:相对于1.x版本陡峭的学习路线,2.0入门深度学习难度大大降低。
    • 自动求导。
    • GPU加速。
    • 神经网络Layers。
    • 在训练方面:使用Keras和eager execution轻松构建模型,为研究提供强大的实验工具。
  • 与其他框架对比

    • Scikit-learn:面向机器学习,不支持深度学习,不支持GPU加速运算。
    • Caffe:主要由Facebook在做强烈的推广。第一个面向深度学习的框架,采用C++编程方式,支持Python接口,不支持自动求导。是面向深度学习的一个鼻祖。
    • Keras:被谷歌收购了,是TensorFlow的一个API包装,以后会逐渐淡出因为谷歌不想同时维护两个框架。
    • Theano:由加拿大深度学习一位老师开发出来的,现在由Google维护。开发难,调试难,现在已经停止开发了。Tensorflow1的原型就是Theano。
    • Torch:使用Lua语言,相对来说比较小众,对新手不友好。
    • Chainer:日本开发的一款深度学习框架。TensorFlow和PyTorch借鉴了这个框架。
    • MXNet:华人开发的一个深度学习框架,亚马逊深度学习官方框架。
    • PyTorch:必须掌握的框架。结合了Caffe2作为其后端,结合了Torch作为其前端。
    • NUS SINGA:Prof. OOI&Prof.Wang。
  • eco-system 生态系统

    • TensorFlow2.0核心库。
    • TensorFlow Lite。
    • TensorFow.JS。
    • TensorFlow Extended。
    • TensorFlow Prob。
    • TPU Cloud。CPU-->GPU-->TPU加速计算能力逐渐增强。

caffe作者

贾扬清(没错,这位大神是中国人),拥有加州大学伯克利分校计算机科学博士学位、清华大学硕士学位和学士学位,曾于新加坡国立大学、微软亚洲研究院、NEC美国实验室、Google Brain工作,现任Facebook研究科学家,负责前沿AI平台的开发以及前沿的深度学习研究。

# 环境需求

  • window10。
  • anaconda 2018版本。https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
  • python3.7。
  • CUDA 10.0 NVIDIA显卡 。https://developer.nvidia.com/cuda-toolkit-archive GTX1060 6GB/GTX 1080Ti 11GB或者更高。
  • TensorFlow2.0。
  • PyCharm。

# 环境搭建

  • anaconda安装,安装的时候记得勾选path。安装结束后使用cmd conda list来验证是否完成。

  • CUDA 10.0 NVIDIA显卡安装。visual studio 不勾,display 显卡驱动如果电脑已经安装的版本高就去掉勾。

  • 环境变量配置。path新加路径并move up到顶部。C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\cudnn\bin安装成功会提示如下信息:

    C:\Users\ylxyx>nvcc -V
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2018 NVIDIA Corporation
    Built on Sat_Aug_25_21:08:04_Central_Daylight_Time_2018
    Cuda compilation tools, release 10.0, V10.0.130
    
    1
    2
    3
    4
    5

# 创建conda虚拟开发环境

我们把tensorflow-gpu安装到另外一个虚拟环境,这样做的好处是CPU版和GPU不互相影响。安装GPU版需要本地计算机配置支持CUDA的NVIDIA显卡,因为在搭建TensorFlow的GPU版本时,首先需要做的一件事就是安装其基础支持平台CUDA和其机器学习库cuDNN,然后在此基础上搭建TensorFlow GPU版本。

其次还要了解一下不同的TensorFlow版本所需要对应安装的CUDA和cuDNN版本是多少,因为在TensorFlow的GPU版本安装过程中,如果对应的CUDA版本和cuDNN版本不正确的话,是无法正常使用GPU来进行模型训练的。

创建conda虚拟环境,安装依赖包和CPU版本相同,这里就不再讲述了。建议GPU虚拟环境的名称为:tensorflow-gpu。

安装GPU版本之前,首先确认本地计算机是否配置了NVIDIA显卡,并且运算能力在3.5之上。要查看本地计算机显卡算力,可以直接去nvidia查看,网址如下:

https://developer.nvidia.com/cuda-gpus#compute

在安装tensorflow-gpu之前,还需要安装CUDA和cuDNN。CUDA (ComputeUnified Device Architecture)是显卡厂商 NVIDIA 推出的运算平台,它采用通用并行计算架构,该架构使 GPU 能够解决复杂的计算问题。cuDNN是指NVIDIA cuDNN,它是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。

  • 创建环境命令

Anaconda提供了一个默认的base环境,也可以直接在base环境中开发应用程序。基于课程内容需要,我们创建tensorflow-cpu环境。创建环境的命令为:

conda create -n ENV_NAME python=x.x

其中,-n表示环境名称参数,ENV_NAME为待创建虚拟开发环境的名称,x.x表示该环境中python的版本是多少,例如想要3.9版本的python,就写python=3.9。

启动Windows命令行窗口,在窗口输入下面的命令:

conda create -n tensorflow-gpu python=3.7

若出现‘conda’不是内部或外部命令,也不是可运行的程序等信息,需要配置Anaconda系统环境变量。命令执行完成,名称为tensorflow-gpu的虚拟开发环境就创建成功了。

  • 查看环境命令

若需要查看当前Anaconda有哪些虚拟环境,可以使用下面的命令:

C:\Users\ylxyx>conda env list
# conda environments:
#
base                  *  C:\Anaconda3
tensorflow-gpu           C:\Anaconda3\envs\tensorflow-gpu
1
2
3
4
5
  • 激活环境命令

该命令是常用的操作命令,使用该命令激活环境后,才能进入该虚拟环境进行编程。命令如下:

conda activate ENV_NAME

其中ENV_NAME是要进入的环境名称。进入成功后,一般可以看到命令行的最左端括号中也切换成了ENV_NAME的名称。另外,如果想要从一个环境A切换到另一个环境B去,也可以直接执行该命令,将ENV_NAME写为B即可。

C:\Users\ylxyx>conda activate tensorflow-gpu

(tensorflow-gpu) C:\Users\ylxyx>
1
2
3
  • 退出环境命令

若需要退出当前虚拟开发环境,可以使用下面的命令:

conda deactivate

该命令直接退回到base环境。

  • 删除环境命令

该命令需谨慎使用,因为该命令会删除虚拟环境下的所有数据。命令如下:

conda remove -n ENV_NAME --all

  • 安装tensorflow-gpu版本

安装GPU版本之前,需要确定合适的tensorflow-gpu版本,因为不同版本适配不同的CUDA和cuDNN版本。进入ensorflow官网页面,查看适合本地计算机安装的tensorflow-gpu版本。

启动Windows命令行窗口,输入下面的命令创建tensorflow-gpu虚拟开发环境:

conda create -n tensorflow-gpu python=3.8

输入激活tensorflow-gpu环境命令:

conda activate tensorflow-gpu

安装相关依赖包:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy matplotlib pillow pandas scikit-learn

(tensorflow-gpu) C:\Users\ylxyx>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

安装tensorflow-gpu 2.0.0版本:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==2.0.0

在安装过程中,若出现“ReadTimeoutError”,说明网络速度比较慢,换一个网络速度比较快的环境安装。或者设置超时时间:

pip --default-timeout=1000 install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==2.0.0

在安装过程中,若出现如下图所示的错误:

可使用pip单独安装termcolor:

pip install termcolor==1.10

在安装过程中,若出现下图所示的错误:

可使用pip单独安装wrapt:

pip install wrapt==1.10

  • 验证tensorflow-gpu版本

使用conda命令激活tensorflow-gpu虚拟开发环境:

conda activate tensorflow-gpu

进入Python环境:

(tensorflow-gpu) C:\Users\ylxyx>python

在Python环境,分别执行下面的语句:

>>> import tensorflow as tf
>>> print(tf.__version__)
1
2

若输出tensorflow的版本号,则说明tensorflow 安装成功,后面还要验证GPU是否能够正常使用。

在Python环境输入下面的语句:

print(tf.config.list_physical_devices('GPU'))

若输出“[]”,说明GPU设备没有启用,查看打印信息,输出了cusolver64_10.dll not found错误。CUDA11默认使用的是cusolver64_11.dll的文件,但是代码运行的时候却是需要cusolver64_10.dll文件,这可能是tensorflow-2.4.0的一个BUG,从网上下载cusolver64_10.dll,然后复制到CUDA安装目录computingtoolkit\v11\bin目录下即可解决该问题。或者直接修改cusolver64_11.dll名称为cusolver64_10.dll,然后重新启动命令行窗口,再次执行列出GPU设备的命令。若输出如下内容,说明GPU设备已启用。

如果错误信息是:AttributeError: module ‘tensorflow_core._api.v2.config’ has no attribute ‘list_physical_devices’应该是接口更新了,改成以下接口就不会报错了。

1 查看所有GPU

tf.config.experimental.list_physical_devices('GPU')

2023-04-29 14:26:34.414499: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library nvcuda.dll
2023-04-29 14:26:34.473175: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties:
name: NVIDIA GeForce RTX 3060 Ti major: 8 minor: 6 memoryClockRate(GHz): 1.665
pciBusID: 0000:01:00.0
2023-04-29 14:26:34.473314: I tensorflow/stream_executor/platform/default/dlopen_checker_stub.cc:25] GPU libraries are statically linked, skip dlopen check.
2023-04-29 14:26:34.473482: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1746] Adding visible gpu devices: 0
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
1
2
3
4
5
6
7

2 查看所有设备

tf.config.experimental.list_physical_devices(device_type=None)

[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'), PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
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.1.0If 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_BUPFERS_PYTHON_iMPLEMENTATION=python (but this will use pure-Python parsing and will be mch slower ,More information: https://developers. google.com/protocol-buffers/docs/news/2022-05-06#python-updates

(paddle) F: \pycharm\PyCharm Community Edition 2022.1.4\bin\PaddleOCR-release-2.6\PPOCRLabe1>-

解决办法:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple protobuf==3.19.0

上次更新: 2025/02/15, 13:42:25
最近更新
01
Git问题集合
01-29
02
安装 Nginx 服务器
01-25
03
安装 Docker 容器
01-25
更多文章>
×
×