首先,tensor是高维向量,例如矩阵是2维的,tensor是更广义意义上的n维向量,有type和shape。
TensorFlow执行过程为定义图,其中定义子节点,计算时只需要计算所需节点依赖的节点,是一种高效且适应大规模的数据计算,方便分布式设计,对于复杂神经网络的计算可以将其拆开到其他的核中同时计算。
Theano——torch——caffe——deeplearningj——H20——MXnet,tensorflow
整个构图流程大体如下:
#导入tensorflow库
import tensorflow as tf
#定义变量(节点)
x = tf.Variable(3,name = 'x')
y = tf.Variable(4,name = 'y')
f = x*x*y +y +2
#定义session
sess = tf.Session()
#为已经定义的节点赋值
sess.run(x.initializer)
sess.run(y.initializer)
#运行session
result = sess.run(f)
print(result)
#42
释放空间
sess.close()
上述流程可以简化:
#导入tensorflow库
import tensorflow as tf
#定义变量(节点)
x = tf.Variable(3,name = 'x')
y = tf.Variable(4,name = 'y')
f = x*x*y +y+2
#定义session,为已经定义的节点赋值,运行session
with tf.Session() as sess:
x.initializer.run()
y.initializer.run()
result = f.eval()
初始化的部分可以进一步简化
#导入tensorflow库
import tensorflow as tf
#定义变量(节点)
x = tf.Variable(3,name = 'x')
y = tf.Variable(4,name = 'y')
ff = x*x*y +y+2
#定义session,为已经定义的节点赋值,运行session
init = tf.global_variables_initializer()
sess = tf.InteractiveSession()
init.run()
result = ff.eval()
可以总结为TensorFlow的代码分为两部分,定义部分和执行部分。
TensorFlow是一种图的操作,有自动缺省的默认图和自定义的图
#系统默认的缺省图
x1 = tf.Variable(1)
x1.graph is tf.get_default_graph()
Out[10]: True
数据的多处理,可以多次调用
w = tf.constant(3)
x = w+2
y= x+5
z = x*3
with tf.Session() as sess:
print(y.eval())
print(z.eval())
with tf.Session() as sess:
y_val,z_val = sess.run([y,z])
print(y_val)