Session:
#session 会话拥有TensorFlow程序运行的所有资源,当所有程序运行结束后需要关闭会话来帮助系统回收资源,否则就可能出现资源泄露的问题
本文主要对Session三种方式的操作。
代码:
import tensorflow as tf
A=tf.constant([1],name="A")
B=tf.constant([2,3],name="B")
Result=A+B
#方法1
#创建一个对话
sess=tf.Session()
print(sess.run(Result))
sess.close()
#关闭会话使得行中使用到的资源可以释放
#方法2
with tf.Session() as sess:
print(sess.run(Result))
#方法3 用tf.InteractiveSession()可以自动生成注册为默认会话。比较方便。
sess = tf.InteractiveSession()
A=tf.constant([1],name="A")
B=tf.constant([2,3],name="B")
Result=A+B
print(Result.eval(sess))
sess.close()
Variable:
说到Variable不得不提placeholder。先来聊聊变量Variable
1:
最常用的创建变量的方式
import tensorflow as tf
A = tf.Variable([1,2,3])#创建变量A,为一个array
print(A)#查看A的shape,不是A的值。结果是:
with tf.Session()as sess:
sess.run(A.initializer)#运行变量的initializer。调用op之前,所有变量都应被显式地初始化过。
sess.run(A)#查看A的值,结果是:array([1, 2, 3])
2:
R = tf.Variable(tf.random_normal([20, 10], stddev=0.5)) #以标准差0.5的正态分布初始化一个形状为[20,10]的张量
z = tf.Variable(tf.zeros([20])) #初始化一个形状为[20]的张量, 里面的元素值全部为0.
与tf.zeros函数类似的还有 1:tf.ones,单位矩阵 2:tf.eye,对角线为1的矩阵 3:tf.constant,创建一个常数的张量
3:创建变量还可以调用 tf.get_variable 函数。获取已存在的变量。
推荐使用 tf.get_variable,方便初始化。
k = tf.get_variable(k", shape=[784, 256], initializer=tf.contrib.layers.xavier_initializer())
tf.get_variable() 会检查当前命名空间下是否存在同样命名的变量,可以方便共享变量。而tf.Variable 每次都会新建一个变量。
需要注意的是tf.get_variable() 要配合reuse和tf.variable_scope() 使用。
再回到先前提到的二者的区别:
placeholder:相当于形参,可以先定义,用到的时候再赋值。此函数和feed_dict配合使用。
网友评论