【深度学习】TensorFlow张量的属性与创建

145 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情

注意:本文使用tensorflow1.x版本进行演示

使用本地Jupyter Notebook搭载TensorFlow相关库进行操作

1. 张量

1.1 张量的基本属性

在TensorFlow中,张量就是一个n维数组。张量(Tensor)具有两个重要的属性,分别是数据类型(type)和形状(shape)

  • 一个数字:标量/纯量,0阶张量
  • 一维数组:向量,1阶张量,例如:[1,1,1]
  • 二维数组:矩阵,2阶张量,例如:[[1,1,1], [2,2,2]]
  • n维数组:张量,n是任意的,张量是比较宽泛的叫法,以上都可以看成是张量。

如下图所示:分别表示指令名称、形状和类型

image.png

下面,我们将对不同形状的张量进行演示,打印出其属性(类型和形状)

具体代码如下所示:

  • 创建三个张量
  • 分别为0阶、1阶、2阶张量
def tensor_demo():
    """
    张量的演示
    """
    tensor1 = tf.constant(4.0) # 标量
    tensor2 = tf.constant([1,2,3]) # 向量
    tensor3 = tf.constant([[1],[2],[3]]) # 二阶张量
    
    print(tensor1)
    print(tensor2)
    print(tensor3)
    
tensor_demo()

运行结果如下所示:

  • 其中(3,1)表示三行一列
  • 标量的形状显示为(),空元组
  • 因为创建张量的时候没有指定张量类型,则根据传入的数据元素的类型就是张量的类型
    • 默认:整型tf.int32
    • 默认:浮点型tf.float32

image.png

1.2 张量的创建

1.2.1 创建固定值张量

tf.zeros(shape, dtype=tf.float32, name=None)

  • 创建所有元素设置为零的张量。
  • shape指定形状
  • dtype指定数据类型

创建全0张量代码演示如下所示:

a1 = tf.zeros(shape=[5,5])
sess = tf.Session()

# 查看a1的值
print(a1.eval(session = sess))

运行结果如下图所示:

image.png

tf.ones(shape, dtype=tf.float32, name=None)

  • 创建一个所有元素设置为1的张量
  • shape指定想要创建的张量形状
  • dtype指定数据类型

创建全1张量代码演示如下所示:

a2 = tf.ones(shape=[3,2,5])
sess = tf.Session()

# 查看a2的值
print(a2.eval(session = sess))

运行结果如下图所示:

image.png

tf.constant(value,dype=None, shape=None, name='Const)

  • 创建一个常数张量

1.2.2 创建随机张量

tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

  • 创建符合正态分布的张量
  • mean:均值
  • stddev:标准差