参考《HCIA-AI2.0培训教材》《HCIA-AI2.0实验手册》
认证要求:
- 了解TensorFlow2.0是什么以及其特点
- 掌握TensorFlow2.0基础和高阶操作方法
- 熟悉TensorFlow2.0中的Keras API
简介:
TensorFlow是目前最为流行的深度学习框架,是人工智能领域的第一主要工具。从发布至今,共经历了0.1,1.0,2.0三个版本,认证考试要求掌握的是最新的2.0版本。
TensorFlow1.X中创建Tensor后,不能直接返回结果,只是创建计算图graph,需要在之后使用session会话机制才能运行,这种风格更像是一种硬件编程语言VHDL。
另外,TensorFlow1.X调试困难,API混乱,入门不易,使用更难,很多研究人员转向了PyTorch,但是比如在移动端的部署还是非常头疼。
TensorFlow2.0最大的特性就是去掉了graph和session机制,变得像Python和PyTorch一样,所见即所得。计算图、会话、变量管理与共享、Define-and-Run这些概念将一去不返了。
TensorFlow2.0包括了TensorFlow核心库,JavaScript,Lite,Extend。构成了一个完整的TensorFlow生态系统。
Why TensorFlow?
TensorFlow成为当下最流行的框架主要因为以下几个优势:
- 支持GPU加速
- 支持自动求导
- 丰富的深度学习API
GPU可以对矩阵的加减乘除做并行加速:
import tensorflow as tf
import timeit
with tf.device('/cpu:0'):
cpu_a = tf.random.normal([10000,1000])
cpu_b = tf.random.normal([1000,2000])
print(cpu_a.device,cpu_b.device)
def cpu_run():
with tf.device('/cpu:0'):
c = tf.matmul(cpu_a,cpu_b)
return c
with tf.device('/gpu:0'):
gpu_a = tf.random.normal([10000,1000])
gpu_b = tf.random.normal([1000,2000])
print(gpu_a.device,gpu_b.device)
def gpu_run():
with tf.device('/gpu:0'):
d = tf.matmul(gpu_a,gpu_b)
return d
# warm up
cpu_time = timeit.timeit(cpu_run,number=10)
gpu_time = timeit.timeit(gpu_run,number=10)
print('warm up: ',cpu_time,gpu_time)
# run time
cpu_time = timeit.timeit(cpu_run,number=10)
gpu_time = timeit.timeit(gpu_run,number=10)
print('run time: ',cpu_time,gpu_time)
自动求导tf.Gradient(Tape):
import tensorflow as tf
a = tf.constant(1.)
b = tf.constant(2.)
c = tf.constant(4.)
with tf.GradientTape() as tape:
tape.watch([a,b,c])
y = a**2 + b*c + c
[da,db,dc] = tape.gradient(y,[a,b,c])
print(da)
print(db)
print(dc)
TensorFlow提供大量的深度学习API:
Tensorflow2.0 GPU环境搭建(linux平台下)
Nvidia显卡驱动:需要在Nvidia官网https://www.nvidia.com/Download/index.aspx?lang=en-us查询显卡对应的驱动包,下载。下面提供了一个适合RTX 20XX系列的安装包的百度云链接。链接:https://pan.baidu.com/s/1b1daIaMaz7-oy28sMLjysA 密码:4jeg
下载后进入tty3命令行模式,关闭lightdm,禁用nouveau显卡驱动,并安装Nividia显卡驱动程序