• TensorFlow常量、变量和占位符详解


     TensorFlow 支持以下三种类型的张量:

    1. 常量:常量是其值不能改变的张量。
    2. 变量:当一个量在会话中的值需要更新时,使用变量来表示。例如,在神经网络中,权重需要在训练期间更新,可以通过将权重声明为变量来实现。变量在使用前需要被显示初始化。另外需要注意的是,常量存储在计算图的定义中,每次加载图时都会加载相关变量。换句话说,它们是占用内存的。另一方面,变量又是分开存储的。它们可以存储在参数服务器上。
    3. 占位符:用于将值输入 TensorFlow 图中。它们可以和 feed_dict 一起使用来输入数据。在训练神经网络时,它们通常用于提供新的训练样本。在会话中运行计算图时,可以为占位符赋值。这样在构建一个计算图时不需要真正地输入数据。需要注意的是,占位符不包含任何数据,因此不需要初始化它们。

    TensorFlow 常量

    声明一个标量常量:

    t_1 = tf.constant(4)

    一个形如 [1,3] 的常量向量可以用如下代码声明:

    t_2 = tf.constant([4,3,2])

    要创建一个所有元素为零的张量,可以使用 tf.zeros() 函数。这个语句可以创建一个形如 [M,N] 的零元素矩阵,数据类型(dtype)可以是 int32、float32 等:

    tf.zeros([M,N],tf.dtype)

    例如:

    zero_t = tf.zeros([2,3],tf.int32)
    # Results in an 2x3 array of zeros:[[0 0 0],[0 0 0]]

    创建一个所有元素都设为 1 的张量。下面的语句即创建一个形如 [M,N]、元素均为 1 的矩阵:

    tf.ones([M,N],tf,dtype)

    例如:

    ones_t = tf.ones([2,3],tf.int32)
    # Results in an 2x3 array of ones:[[1 1 1],[1 1 1]]


    更进一步,还有以下语句:

      • 在一定范围内生成一个从初值到终值等差排布的序列:

        tf.linspace(start,stop,num)

        相应的值为 (stop-start)/(num-1)。例如:

        range_t = tf.linspace(2.0,5.0,5)
        #We get:[2. 2.75 3.5 4.25 5.]

      • 从开始(默认值=0)生成一个数字序列,增量为 delta(默认值=1),直到终值(但不包括终值):

        tf.range(start,limit,delta)

        下面给出实例:

        range_t = tf.range(10)
        #Result:[0 1 2 3 4 5 6 7 8 9]

      •  
  • 相关阅读:
    51Nod一级算法1002数塔取数问题
    素数筛法
    辗转相除法求最大公约数
    模型评估与选择
    Linux下的五种IO模型
    浮点类型丢失精度的问题
    Update操作浅析,一定是先Delete再Insert吗?
    SQLSERVER中返回修改后的数据
    MachineKey生成
    Katana的起源
  • 原文地址:https://www.cnblogs.com/huaobin/p/16291052.html
Copyright © 2020-2023  润新知