一、 基本概念
- 使用图( graphs )来表示计算任务
- 在被称之为会话( Session )的上下文( context )中执行图
- 使用tensor表示数据
- 通过变量 ( Variable )维护状态
- 使用feed和fetch可以为任意 的操作赋值或者从其中获取数据
tensorflow是一个编程系统 ,使用图( graphs )来表示计算任务,图( graphs )中的节点称之为op( operation) ,一个op获得0个或多个Tensor ,执行计算,产生0个或多个Tensor。Tensor 看作是一-个n维的数组或列表。图必须在会话( Session )里被启动。
二、 示例程序
import tensorflow as tf # 载入TensorFlow模块
m1 = tf.constant([[3, 3]]) # 创建一个1行2列的矩阵
m2 = tf.constant([[2], [3]]) # 创建一个2行1列的矩阵
product = tf.matmul(m1, m2) # 矩阵相乘
with tf.Session() as sees: # 定义会话,启动图
result = sees.run(product) # sees 的 run 方法执行矩阵乘法,触发图中的op
print(result) # 输出结果
结果:[[15]]
三、 创建变量
import tensorflow as tf
m1 = tf.Variable([1, 2]) # 创建一个变量
m2 = tf.constant([3, 3]) # 创建一个常量
add = tf.add(m1, m2) # 相加
sub = tf.subtract(m1, m2) # 相减
state = tf.Variable(0, name='counter') # 创建一个变量
new_value = tf.add(state, 1) # 变量加1
update = tf.assign(state, new_value) # 将new_value赋值给state、updata
init = tf.global_variables_initializer() # 变量初始化
with tf.Session() as sees:
sees.run(init)
print(sees.run([add, sub])) # fetch可以同时运行两个
for i in range(5):
print('update', sees.run(update))
运行结果:
[array([4, 5]), array([-2, -1])]
update 1
update 2
update 3
update 4
update 5
四、 创建占位符
占位符:顾名思义,就是在程序中占住一个位置,但其值不确定,当程序运行时,可以以字典的形式传入进去。
import tensorflow as tf
m1 = tf.placeholder(tf.float32) # 创建一个占位符
m2 = tf.placeholder(tf.float32) # 创建一个占位符
output = tf.multiply(m1, m2) # 数值相乘
with tf.Session() as sees:
# feed数据以字典形式传入参数值,m1=8, m2=2
print(sees.run(output, feed_dict={m1: [8.0], m2: [2.0]}))
结果:16