Tensorflow的基本原理很简单,首先在Python中定义要执行的计算图,然后TensorFLow使用该图并使用优化的C++代码高效运行该图。举个例子,要用TensorFlow来计算f(x)=x*x*y +y +2的值,首先创建一个图谱,然后运行它。
import tensorflow as tf
x = tf.Variable(3,name="x")
y = tf.Variable(4,name="y")
f = x*x*y + y + 2
这段代码实际上不执行任何计算,它只是在创建一个计算图谱。事实上,变量都没有进行初始化,要求出此图,需要先打开一个TessorFlow会话并使用它的初始化变量求出f。TensorFlow会话负责处理在诸如CPU和GPU之类的设备上操作并运行它们,并且保留所有的变量值。以下代码创建一个会话,初始化变量,并求出f,然后关闭会话(释放资源):
sess=tf.Session()
sess.run(x.initializer)
sess.run(y.initializer)
resukt=sess.run(f)
print(result)
sess.close()
不得不每次重复sess.run(),有点麻烦,可以用这种方法:
with tf.Session() as sess:
x.initializer.run()
y.initializer.run()
result = f.eval()
print(result)
在with块中,会话被设置为默认会话。运行上段代码就可以用TensorFlow进行计算了。
创建的任何节点都会自动添加到默认图形中,当需要管理多个图形时,我们可以创建一个新的图形并暂时将其设置为一个块中的默认图形,代码如下:
graph = tf.Graph()
with graph.as_default():
x=tf.Variable(1)
这时x的graph就是graph,而不是default graph。