本篇文章主要介绍tensorflow的一些相关概念和使用方法。
1、tf.Variable()的使用,简单实例
import tensorflow as tf x = tf.Variable(3, name='x') #创建变量tf的一个变量 y = tf.Variable(4, name='y') f = x*x*y + y + 2 # 在with块内部,session被设置为默认的session with tf.Session() as sess: x.initializer.run() # 等价于 tf.get_default_session().run(x.initializer) y.initializer.run() result = f.eval() # 等价于 tf.get_default_session().run(f) print(result)
2、改进的tf,不对每个变量分别进行初始化,而使用全局变量初始化,在需要运行的时候再初始化参数
import tensorflow as tf x = tf.Variable(3, name='x') y = tf.Variable(4, name='y') f = x*x*y + y + 2 # 可以不分别对每个变量去进行初始化 # 并不立即初始化,在run运行的时候才初始化 init = tf.global_variables_initializer() with tf.Session() as sess: init.run() result = f.eval() print(result)
3、tf的变量生存的周期
import tensorflow as tf # 当去计算一个节点的时候,TensorFlow自动计算它依赖的一组节点,并且首先计算依赖的节点 w = tf.constant(3) x = w + 2 y = x + 5 z = x * 3 with tf.Session() as sess: print(y.eval()) # 这里为了去计算z,又重新计算了x和w,除了Variable值,tf是不会缓存其他比如contant等的值的 # 一个Variable的生命周期是当它的initializer运行的时候开始,到会话session close的时候结束 print(z.eval()) # 如果我们想要有效的计算y和z,并且又不重复计算w和x两次,我们必须要求TensorFlow计算y和z在一个图里 with tf.Session() as sess: y_val, z_val = sess.run([y, z]) print(y_val) print(z_val)
4、tf中placeholder节点的使用
顾名思义,placeholder即占位符,这些节点并不做真正的计算,而是在计算的过程中需要它们输出数据的时候输出即可。在此过程中,你可指定输入的数据的维度,也可以不提前指定大小。
import tensorflow as tf A = tf.placeholder(tf.float32, shape=(None, 3)) #tf.float32是指传入的数据形式是float32类型,shape是传入数据的大小 B = A + 5 #此处None表示任意大小,3表示输入数据的维度 with tf.Session() as sess: B_val_1 = B.eval(feed_dict={A: [[1, 2, 3]]}) B_val_2 = B.eval(feed_dict={A: [["4", 5, 6], [7, 8, 9]]}) print(B_val_1) print(B_val_2)