Tensorflow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。在具体编程时有点类似于声明式编程。先介绍几个最基础的概念。
- 数据流图:tensorflow中使用图来计算任务,就是说如果想完成一个伟大的壮举首先得先把蓝图规划好。有了蓝图再一步步的往下进行。
- 会话:在会话中执行图,会话将图中的节点发到CPU/GPU中执行。有点像是告诉大家好了我要从现在开始实施我的蓝图了。
- tensor:节点是tensorflow中的一种数据结构,可以看成一个n维的数组或者列表。
- 变量:用来维护图中的状态,变量的值在执行时可以被改变,但是必须要先初始化才可以执行(variable.initializer.run()或者可以用tf.global_variables_initializer())
- 节点:一般用op表示,一个op一般用n个tensor进行计算,返回m个tensor
- feed:用来给op喂数据的
- fetch:取回op的值的
基础操作之——执行简单的加减乘除运算
import tensorflow as tf
#tf.constant()是创建一个常量,是一个tensor
a=tf.constant([[1,2],[2,1]])
b=tf.constant([[2,2],[1,2]])
#执行乘法操作,此时图已经创建完毕
product = tf.matmul(a,b)
#定义一个会话,在会话中执行图
with tf.Session() as sess:
result = sess.run(product)
print(result)
#自动结束会话
返回结果:[[4 6],[5 6]]
基础操作之——变量怎么用?
变量在使用之前必须要先赋值而且只有初始化后才可以运行。这里的tf.InteractiveSession()能在运行图的时候,插入一些计算图,这些计算图是由某些操作(operations)构成的。这对于工作在交互式环境中的人们来说非常便利。
与tf.session()的区别是:在使用tf.InteractiveSession()来构建会话的时候,我们可以先构建一个session然后再定义操作(operation),如果我们使用tf.Session()来构建会话我们需要在会话构建之前定义好全部的操作(operation)然后再构建会话。
import tensorflow as tf
#定义一个常量
a=tf.constant([[1,2],[2,1]])
sess = tf.InteractiveSession()
#定义一个变量
x = tf.Variable([[3],[5]])
#必须先初始化才能用
x.initializer.run()
#进行减法操作
sub = tf.subtract(x,a)
print(sub.eval())