TensorFlow由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护的开源深度学习平台,是目前人工智能领域主流的开发平台,在全世界有着广泛的用户群体。
一、在线安装:
安装tensorflow及依赖包:pip install tf-nightly
安装纯净包:pip install tensorflow
安装GPU版本:pip install tf-nightly-gpu
二、tensorflow体系结构:
2.1 TensorFlow属于“定义”与“运行”相分离的运行机制。从操作层面可以抽象成两种:模型构建和模型运行。
例如:
import tensorflow as tf import os os.environ["CUDA_VISIBLE_DEVICES"]="0" a=tf.constant(2) b=tf.constant(3)
c=tf.add(a,b) with tf.Session() as sess:
sess.run(c)
2.2 tensorflow运行体系
TF的实现分为“单机实现”和“分布式实现”。包含以下几个模块:
客户端:用户编程、执行使用
master:用来与客户端交互,并进行任务调度
worker process:工作节点,每个worker process可以访问一到多个device
device:TF的计算核心,执行计算

2.3 后端逻辑层次:
如图所示:共包含应用层(编程语言接口)、核心API、运行系统(Exec System)、计算层、网络层、设备层(cpu\gpu\tpu管理)等。

三、基本概念及相关操作
3.1 图(Graph):描述整个程序结构,Tensorflow中所有的计算都构建在图中。(模型构建)
图对象的创建:graph1 = tf.Grapt() 设置为默认图对象:graph1.as_default() 获取默认图对象:graph2 = tf.get_default_graph()
3.2 会话(Session):用来执行图的运算。(模型运行)
注意事项:一个session只能执行一个图的运算。可以在会话对象创建时,指定运行的图。如果在构造会话时未指定图形参数,则将在会话中使用默认图。
如果在同一进程中使用多个图(使用tf.graph( )创建),则必须为每个图使用不同的会话,但每个图可以在多个会话中使用。
会话的创建:sess = tf.Session() 创建会话时指定运行的图: sess = tf.Session(graph = graph2) 关闭会话:sess.close()
创建会话上下文: with tf.Session() as sess:
在会话中运行操作:sess.run(fetches, feed_dict=None) 参数fetches是图中的单个操作,或多个操作的列表;
参数feed_dict 是运行操作需要的参数构成的字典(可以覆盖操作中原有参数)。
3.3 张量(Tensor): 多维数组或向量,张量是数据的载体(可以理解为值,变量的值,常量的值都是张量),包含名字、形状、数据类型等属性。
3.3.1 张量的维度(dim):
0维张量: 维度表示(),例如:6
1维张量: 维度表示(3,),例如:[2,3,4]
2维张量: 维度表示(2,3),例如:[[2,3,4],[5,6,7]]
3.3.2 张量的数据类型(dtype):
tensorflow张量有自己的数据类型,形如DT_FLOAT,DT_DOUBLE,DT_INT32与python数据类型有对应关系,所以通常用tf.float32,tf.float64,tf.int32来表示张量数据类型,甚至可以直接用float32,int32来表示。
3.3.3 特殊张量的生成函数:
tf.zeros(shape=[2,3],dtype="float32") tf.ones(shape=[2,3],dtype="float32") tf.ones_like(tensor1) tf.random_normal(shape=3,4],mean=1.7,stddev=0.8,dtype="float32")
3.3.4 张量的数据类型转换函数:
tf.to_float32(x) tf.string_to_number(str_tensor) tf.cast(x,dtype)
3.4 占位符(placeholder):是变量占位符,当不能确定变量的值时,可以先声明一个占位符,真正执行时再传入变量。
创建占位符: phd1 = tf.placeholder(dtype,shape=None,name=None) 例如: phd1 = tf.placeholder(tf.int32,shape=[2,3],name="score") phd2 = tf.placeholder(tf.float64,shape=[None,3],name="nums")
浙公网安备 33010602011771号