Tensorflow2.x框架-张量生成

                                                                张量生成

博主微信公众号(左)、Python+智能大数据+AI学习交流群(右):欢迎关注和加群,大家一起学习交流,共同进步!

Tensorflow 用 张量(Tensor) 这种数据结构来表示所有的数据。我们可以把 张量(Tensor) 想象成一个 n 维的数组或列表。一个 张量(Tensor)有一个静态类型和动态类型的维数。张量可以在图中的节点之间流通。

1、张量(Tensor):多维数组(列表)。阶:张量的维数(dim)。   

    

     张量可以表示 0 阶到 n 阶数组(列表)。

2、阶

    在 Tesorflow 系统中,张量的维数来被描述为阶。但是张量的阶和矩阵的阶并不是同一个概念。张量的阶(有时是关于如顺序或度数或者是 n 维)是张量维数的一个数量描述。比如,下面的张量(使用 Python 中 list 定义的)就是 2 阶。

        

    我们可以认为一个二阶张量就是我们平常所说的矩阵,一阶张量可以认为是一个向量。对于一个二阶张量我们可以使用语句t[i, j] 来访问其中的任何元素。而对于三阶张量我们可以用t[i, j, k] 来访问其中的任何元素。

        

3、形状

    Tensorflow 文档中使用了三种记号来描述张量的维度:阶、形状、维数。下标展示了他们之间的关系:

        

    形状可以通过 Python 中的整数列表或元组(int list 或 tuple)来表示,也或者用 tf.shape 属性来表示。

4、数据类型

    (1)有符号整型、

        

    (2)无符号整型

        

    (3)浮点型

        

    (4)字符串型

        

    (5)布尔型   

        

    (6)复数型    

        

5、如何创建一个 Tensor

   (1)创建一个张量

        tf.constant(张量内容, dtype=数据类型(可选))

        示例:

            创建一个一阶张量,里面有两个元素 1 5,指定数据类型是 64 位整型,赋值给 a。打印出 a,打印出 a 的数据类型,打印出 a 的形状。

            

            运行结果:

                直接打印 a 会输出张量的所有信息,包括:

                    a、张量的内容[1 5]、

                    b、张量的形状shape=(2,)。张量的形状看 shape 的逗号隔开了几个数字,逗号隔开了几个数字,这个张量就是几维的。这个例子中,shape 括号中用逗号隔开了一个数字,说明是一维张量。这个数字是 2,说明这个张量里有 2 个元素,也就是这里的数值 1 和 数值 5。

                    c、张量的数据类型dtype=int64

            

    (2)将 numpy 的数据类型转换为 Tensor 数据类型

        tf.convert_to_tensor(数据名, dtype=数据类型(可选))

        

        运行结果:

        

    (3)创建全为 0 的张量

        tf.zeros(维度)

        示例:

            tf.zeros([2, 3]) 创建了一个二维张量,第一个维度有两个元素,第二个维度有三个元素,元素的内容全是 0。

            

            运行结果:

            

    (4)创建全为 1 的张量

        tf.ones(维度)

        示例:

            tf.ones(4) 创建了一个一维张量,里面有 4 个元素,内容全是 1。

            

            运行结果:

            

    (5)创建全为指定值的张量

        tf.fill(维度, 指定值)        

        示例:

            tf.fill([2, 2], 9) 创建了一个两行两列的二维张量,第一个维度有两个元素,第二个维度有两个元素,内容都是 9。

            

            运行结果:

            

    (6)维度:

        a、一维:直接写个数。

            如果是一维的,括号里直接写数字。比如  tf.ones(4) 这里写 4 表示只有一个维度,这个维度里有 4 个元素。

        b、二维:用 [行, 列]

            如果是二维的,方括号里写 几行,几列。比如 tf.zeros([2, 3]) 里的 2 行 3 列。

        c、多维:用 [n, m, j, k, ...]

            如果是多维的,方括号里写每个维度的元素个数,中间用逗号隔开。

    (7)生成正态分布的随机数,默认均值为 0,标准差为 1

        tf.random.normal(维度, mean=均值, stddev=标准差)

        示例:

             tf.random.normal 生成两行两列的张量,里面的元素符合以 0.5 为均值,1 为标准差的分布。

            

            运行结果:

            

    (8)生成截断式正态分布的随机数

        tf.random.truncated_normal(维度, mean=均值, stddev=标准差)

        在 tf.random.truncated_normal 中,如果随机生成数据的取值在 (\mu -2\sigma, u+2\sigma) 之外则重新进行生成,保证了生成值在均值附近。

        \mu:均值,\sigma:标准差

        标准差计算公式:\sigma = \sqrt{\frac{\sum_{i=1}^{n}(x_{i}-\bar{x})^{2}}{n}}

        示例:

             tf.random.truncated_normal 生成两行两列的张量,里面的元素符合以 0.5 为均值,1 为标准差的随机数。而且这些元素都在两倍标准差之内,数据更向均值 0.5 集中。

            

            运行结果:

            

    (9)生成均匀分布随机数 [minval, maxval)

        tf.random.uniform(维度, minval=最小值, maxval=最大值)

        注意: [minval, maxval) 是左闭右开区间。

        示例:

            生成两行两列的张量,其中的每个元素都符合在 0 和 1 之间的平均分布。

            

            运行结果:

            

 


版权声明:本文为weixin_38477351原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。