• tensorflow 中的Variable 和 get_variable


    1)变量是什么?

    变量是输出其当前值的有状态的节点;这意味着它们可以在图形的多次执行中保持其值。它们具有两大特征:

    • 它们可以在训练期间和训练后保存到您的磁盘中。这允许来自不同公司和团体的人们进行协作,因为他们可以保存、恢复并将他们的模型参数发送给其他人。
    • 默认情况下,梯度更新(用于所有神经网络)将应用于图中的所有变量

    这两个特征使得变量适合被用作网络参数(即权重和偏差)。

    2)创建变量

    tf.Variable is a class, and there are several ways to create tf.Variable including tf.Variable.__init__ and tf.get_variable.

    tf.Variable.__init__: Creates a new variable with initial_value.

    W = tf.Variable(<initial-value>, name=<optional-name>)
    

    tf.get_variable: Gets an existing variable with these parameters or creates a new one. You can also use initializer.

    1. W = tf.get_variable(name, shape=None, dtype=tf.float32, initializer=None,
    2. regularizer=None, trainable=True, collections=None)

    It's very useful to use initializers such as xavier_initializer:

    1. W = tf.get_variable("W", shape=[784, 256],
    2. initializer=tf.contrib.layers.xavier_initializer())

     3)初始化变量

    就像大多数编程语言一样,变量需要在使用之前进行初始化。TensorFlow 虽然不是一门语言,但也不例外。要初始化变量,我们必须调用变量初始化器操作并在sess会话上运行该操作。这是一次初始化所有变量的最简单方法。

    例子:

    1. # create graph
    2. a = tf.get_variable(name="A", initializer=tf.constant(2))
    3. b = tf.get_variable(name="B", initializer=tf.constant(3))
    4. c = tf.add(a, b, name="Add")
    5. # add an Op to initialize global variables
    6. init_op = tf.global_variables_initializer()
    7. # launch the graph in a session
    8. with tf.Session() as sess:
    9. # run the variable initializer operation
    10. sess.run(init_op)
    11. # now let's evaluate their value
    12. print(sess.run(a))
    13. print(sess.run(b))
    14. print(sess.run(c))

     

    上图显示生成了两个灰色框,它们代表变量。使用“Add”操作将这两个变量相加。

    *注意:变量通常用于神经网络中的权重和偏差。

    • 权重通常使用 正态分布初始化tf.truncated_normal_initializer()

    • 偏差通常使用从零开始初始化tf.zeros_initializer()

     

     例子:

    1. # create graph
    2. weights = tf.get_variable(name="W", shape=[2,3], initializer=tf.truncated_normal_initializer(stddev=0.01))
    3. biases = tf.get_variable(name="b", shape=[3], initializer=tf.zeros_initializer())
    4. # add an Op to initialize global variables
    5. init_op = tf.global_variables_initializer()
    6. # launch the graph in a session
    7. with tf.Session() as sess:
    8. # run the variable initializer
    9. sess.run(init_op)
    10. # now we can run our operations
    11. W, b = sess.run([weights, biases])
    12. print('weights = {}'.format(W))
    13. print('biases = {}'.format(b))
    weights = [[-0.00376599 -0.00506956  0.00082394]
     [ 0.0016487   0.00981423 -0.00226094]]
    biases = [0. 0. 0.]
  • 相关阅读:
    The ultimate UI kit and design system for Figma 组件库下载
    【Designing ML Systems】第 1 章 :机器学习系统概述
    Ant Design 国内镜像
    建筑可视化中的 3D 纹理
    又一国产摄像机发布
    DDD学习与感悟——向屎山冲锋
    C语言笔记之指针
    CMake静态链接.a文件的几个坑
    magical_spider远程采集方案
    140.深度学习分布式计算框架-3
  • 原文地址:https://blog.csdn.net/u010087338/article/details/126977080