TensorFlow数据模型——张量

TensorFlow最重要的概念就是Tensor和Flow,Tensor就是张量Flow就是流,它们合在一起直观地表达了张量之间通过计算相互转化的过程。

在TensorFlow程序中,所有的数据都通过张量的形式来表示,张量是TensorFlow管理数据的工具。张量可以被简单地理解为多维数组,零阶张量表示标量即一个数,一阶张量表示向量即一维数组,n阶张量表示一个n维数组。

注意,张量在TensorFlow中的实现并不是直接采用数组的形式,而是对TensorFlow中计算结果的引用,在张量中并没有真正保存数字,它保存的是如何得到这些数字的计算过程,有以下示例代码:

import tensorflow as tf

#tf.constant是一个计算,这个计算的结果是张量,保存在变量a中
a = tf.constant([1.0,2.0], name="a")
b = tf.constant([2.0,3.0], name="b")
result = tf.add(a, b, name="add")
print(result)

输出结果为:

Tensor("add:0", shape=(2,), dtype=float32)

从上述代码的运行结果可以看出,一个张量中主要保存了三个属性——名字、维度和类型:

  • 名字(name)不仅是一个张量的唯一标识符,还描述了这个张量是如何计算出来的。张量的命名可以通过“node:src_output“的形式给出来,其中node为节点的名称,src_output表示当前张量来自节点的第几个输出(编号从0开始)。在计算图上每一个节点代表一个计算,计算的结果就保存在张量中,关于计算图的详细内容请参照:TensorFlow计算模型——计算图

  • 维度(shape)描述了张量的维度数以及各个维度的大小。

  • 类型(type)描述了张量在计算图中的类型,每一个张量会有一个唯一的类型,TensorFlow会对参与计算的所有张量进行类型的检查,当发现类型不匹配时会报错,如以下代码:

    import tensorflow as tf
    a = tf.constant([1,2], name="a")
    b = tf.constant([2.0,3.0], name="b")
    result = a + b
    

    运行程序会报类型不匹配的错误:

    ValueError: Tensor conversion requested dtype int32 for Tensor with dtype float32: 'Tensor("b:0", shape=(2,), dtype=float32)'
    

    如果将第一个张量指定为实数类型,那么计算就不会报错了:

    a = tf.constant([1,2], name="a", dtype=tf.float32)
    

    如果不指定类型,TensorFlow会给出默认的类型,使用默认类型有可能导致潜在的类型不匹配问题,因此一般通过指定dtype来明确指出张量的类型。

    TensorFlow支持14种不同的类型,主要包括:

    1. 实数类型:tf.float32,tf.float64;

    2. 整数类型:tf.int8,tf.int16,tf.int32,tf.int64,tf.uint8;

    3. 布尔型:tf.bool;

    4. 复数类型: tf.complex64,tf.complex128。

张量主要有以下两种用途:

  • 第一种用途是对中间计算结果进行引用,当一个计算包含很多中间结果时,使用张量可以大大提高代码的可读性,通常在构建深层神经网络时就不可避免地要用张量来引用中间结果,同时通过张量来存储中间结果可以方便获取中间结果,比如在卷积神经网络中,卷积层或者池化层有可能改变张量的维度,通过张量的get_shape()函数来获取张量的维度信息可以免去人工计算的麻烦。

  • 第二种用途是当计算图构造完成之后,张量可以用来获得计算结果,也就是真实的数字,虽然张量本身不存储真实的数字,但在会话中通过run()函数或eval()可以得到计算结果,关于会话的详细内容请参照:TensorFlow运行模型——会话

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值