TensorFlow基础概念
文章目录
什么是TensorFlow
TensorFlow是一个基于数据流编程的符号数学系统,被广泛应用于各类机器学习算法的编程实现
前身是谷歌的神经网络算法库DistBelief
Tensorflow的运行过程就是张量在数据流图中流动的过程
TensorFlow架构
TensorFlow以C API为界,分为前段和后端两个子系统
前端系统
提供编程模型,负责构造计算图
后端系统
提供运行时环境,负责执行计算图
TensorFlow的安装
TensorFlow每个版本的变动会导致一些API被舍弃,导致代码不通用
本次版本要求:
numpy 1.18.5
TensorFlow 1.14.0
高版本用低版本的函数需要添加
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
保证使用v1函数的方法
在导包时使用
try:
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
except:
import tensorflow as tf
TensorFlow核心概念
图(Graph)
图描述了计算的过程,TensorFlow使用图来表示计算任务
代码案例:
import tensorflow as tf
#第一阶段: 构建图
#定义一个1x2的矩阵,矩阵元素为[3 3]
matrix1 = tf.constant([[3., 3.]])
#定义一个2x1的矩阵,矩阵元素为[22]
matrix2 = tf.constant([[2.],[2.]])
# 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.
product = tf.matmul(matrix1, matrix2)
#第二阶段: 执行图
with tf.Session() as sess:
print ("matrix1: %s" % sess.run(matrix1))
print ("matrix2: %s" % sess.run(matrix2))
print ("result type: %s" % type(sess.run(product)))
print ("result: %s" % sess.run(product))
张量(Tensor)
TensorFlow使用tensor表示数据。每个Tensor就是一个多维的数组
- 0阶张量就是普通的变量 如:111
- 1阶张量是向量 如:1、2、3
- 2阶张量是矩阵 如:[1,2]、[3,4]
- 以此类推
代码案例:
#定义一个1x2的矩阵,矩阵元素为[3 3]
matrix1 = tf.constant([[3., 3.]])
操作(op)
operation的缩写,一个op就是某节点上的一个操作,输入0个或多个Tensor,执行计算,产生输出0个或多个Tensor
会话(Session)
图必须在称之为“会话”的上下文中执行。会话将图的op分发到诸如CPU或GPU之类的设备上执行
变量(Variable)
运行过程中可以被改变,用于维护状态
变量的创建使用张量作为初始值传入构造函数Variable(),初始值是常量或者随机数
所有的变量都需要激活
# 初始化所有的变量,必须用会话run才可以激活 (有定义变量时,这步骤是必须的)
init = tf.global_variables_initializer()
代码案例
import tensorflow as tf
state = tf.Variable(0, name='counter') # 定义变量state,并赋值0,名字counter
# print(state.name)
one = tf.constant(1) # 定义常量one,赋值1
new_value = tf.add(state, one) # 变量 + 常量 = 变量
# 将state用new_value代替
updata = tf.assign(state, new_value) # 把new_value加1的值赋值给state
# 变量激活
init = tf.global_variables_initializer() # 初始化所有的变量,必须用会话run才可以激活 (有定义变量时,这步骤是必须的)
with tf.Session() as sess:
sess.run(init)
for _ in range(3):
sess.run(updata)
print(sess.run(state))