人工智能AI培训_TensorFlow 开发基础
1.TensorFlow是什么
TensorFlow是谷歌开源的第二代用于数字计算的软件库,它可以很好的支持深度学习的各种算法,但它的应用不局限于深度学习,可以支持多种计算平台,系统稳定性较高。为了更好理解它,从以下几个方面介绍:
1)TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。
2)从命名来理解:Tensor(张量)意味着N维数组,Flow(流)意味 着基于数据流图的计算。Tensorflow运行过程就是张量从图的一端流动到另一端的计算过程。
3)TensorFlow的开发过程中,重点在于构建执行流图。也就是:“Data Flow Graphs”,表示TensorFlow是一种基于图的计算框架,其中节点(Nodes)在图中表示数学操作,线(Edges)则表 示在节点间相互联系的多维数据数组,即张量(Tensor),这种基于流的架构让 TensorFlow具有非常高的灵活性。
2.TensorFlow的特点
1)真正的可移植性
引入各种计算设备的支持包括CPU/GPU/TPU,以及能够很好地运行在移动端,如安卓、ios、等等
2)多语言支持
Tensorflow 有一个合理的c++使用界面,也有一个易用的python使用界面来构建和执行你的graphs,你可以直接写python/c++程序。
3)高度的灵活性与效率
TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库能够灵活进行组装图,执行图。随着开发的进展,Tensorflow的效率不算在提高
4)支持
TensorFlow 由谷歌提供支持,谷歌投入了大量精力开发 TensorFlow,它希望 TensorFlow 成为机器学习研究人员和开发人员的通用语言
3.TensorFlow可以做什么
自动驾驶小车
生成音乐
图像识别
语音识别
语言模型
人体行为识别
定理证明
拿来玩马里奥赛车…
4.TensorFlow计算过程
TensorFlow基于数据流图,用于大规模分布式数值计算的开源框架。节点表示某种抽象的计算,边表示节点之间相互联系的张量。
TensorFlow是一个通过计算图的形式来表述计算的编程系统,是以张量(tensor)在计算图(graph)上流动(flow)的方式实现和执行机器学习/深度学习算法的框架。
5.TensorFlow架构
下图是TF的系统架构,从底向上分为设备管理和通信层、数据操作层、图计算层、API接口层、应用层。其中设备管理和通信层、数据操作层、图计算层是TF的核心层。
底层设备通信层负责网络通信和设备管理。设备管理可以实现TF设备异构的特性,支持CPU、GPU、Mobile等不同设备。网络通信依赖gRPC通信协议实现不同设备间的数据传输和更新。
第二层是Tensor的OpKernels实现。这些OpKernels以Tensor为处理对象,依赖网络通信和设备内存分配,实现了各种Tensor操作或计算。Opkernels不仅包含MatMul等计算操作,还包含Queue等非计算操作。Kernel层可以跑在cpu上也可以跑在gpu上。
第三层是图计算层(Graph),包含本地计算流图和分布式计算流图的实现。Graph模块包含Graph的创建、编译、优化和执行等部分,Graph中每个节点都是OpKernels类型表示。
第四层是API接口层。Tensor C API是对TF功能模块的接口封装,便于其他语言平台调用。
第四层以上是应用层。不同编程语言在应用层通过API接口层调用TF核心功能实现相关实验和应用。
TensorFlow的内核引擎使用C++实现的,效率是很高的。TensorFlow的内核封装实现了NN、CNN等基本机器学习算法。前端应用层支持Python或C++,一般用Python(AI领域第一编程语言)。在应用层,如果使用了其他的Python耗时操作(如数据预处理等),可能效率会比较低,但这不是TensorFlow造成的。
6.TensorFlow开发环境搭建
推荐使用Anaconda3+Pycharm来开发,安装过程可参考以下博客文章
https://blog.csdn.net/albert201605/article/details/79090620/
7.TensorFlow简单示例
'''
1.引入tensorflow
2.定义常量、变量
3.创建Session会话
4.调用Session中的run()方法来运行,得出结果
5.关闭seession
'''
#引入tensorflow
import tensorflow as tf
#定义常量
hello = tf.constant("hello,tensorflow")
a = tf.constant(10)
b = tf.constant(20)
with tf.Session() as sess:
print(sess.run(hello))
print(sess.run(a + b))