美文网首页
tensorflow中Session和Variable

tensorflow中Session和Variable

作者: 朱宏飞 | 来源:发表于2018-08-23 21:37 被阅读0次

    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配合使用。

    相关文章

      网友评论

          本文标题:tensorflow中Session和Variable

          本文链接:https://www.haomeiwen.com/subject/rjzmiftx.html