Tensorflow——张量

在Tensorflow中,所有数据都通过张量的形式来表示,从功能上看,张量可以简单的被理解为多维数组。其中零阶张量表示标量(scalar),也就是一个数;第一阶张量为向量(vector),也就是一个一维数组;同理第n阶张量就是n维数组。
但是张量在Tensorflow中的实现并不是采用数组的形式,他只是对Tensorflow中运算结果的引用。在张量中并没有真正的保存数字,它保存的是如何得到这些数字的计算过程。
例如向量加法,运行下列代码时并不会得到加法的结果,而是一个对结果的引用。

这里写图片描述
这里写图片描述

Tensorflow的张量和Numpy的数组是不同的,Tensorflow计算的结果不是一个具体数字,而是一个张量结构。
一个张量主要保存三个属性:名字(name)、维度(shape)、类型(type)
张量的第一个属性名字不仅是一个张量的唯一标识符,它同样给出了这个张量是如何计算出来的。Tensorflow的计算都可以通过计算图的模型来建立,而计算图的每一个节点代表一个计算,计算的结果就保存在张量中,所以张量和计算图上的节点所代表的计算结果是对应的。这样张量的命名就可以通过“node:src_ouput”的形式给出,node是节点名,src_output表示当前张量来自节点的第几个输出。
例如上面的”add:0”就说明了result这个张量是计算节点”add”输出的第一个结构(编号从0开始)。
张量的第二个属性是张量的维度(shape),这个属性描述了一个张量的维度信息。比如上面样例中的shape=(2,)说明张量result是一个一维数组,这个数组长度为2.维度是张量的一个很重要的属性,围绕张量维度的Tensorflow也给出了很多有用计算
张量第三个属性是类型(type),每一个张量会有唯一的类型,Tensorflow会对参与运算的所有张量进行类型检查,当发现类型不匹配时会报错。
这里写图片描述

但是如果是指定了类型则不会报错
这里写图片描述

不置顶类型Tensorflow会给出默认类型,不带小数点是int32,带小数点是float32。
Tensorflow支持14种类型
实数(tf.float32、tf.float64)
整数(tf.int8、tf.int16、tf.int32、tf.int64、tf.uint8)
布尔型(tf.bool)
复数(tf.complex64、tf.complex128)

张量的使用
和Tensorflow的计算模型相比,它的数据模型相对比较简答,张量使用主要可以总结为两大类。
第一类用途是对中间计算结果的引用。当一个计算包含很多中间结果时,使用张量可以大大提高代码的可读性。
这里写图片描述
a和b其实就是对常量生成这个运算结果的引用,这样在做加法时可以直接使用这两个变量,而不需要再去生成常量。当计算的复杂度增加时,通过张量引用计算的中间结果可以使代码的可阅读性大大提升。同时通过张量来存储中间结果,这样可以方便获取中间结果。比如在卷积神经网络中,卷积层或者池化层有可能改变张量的维度,通过result_get_shape函数获取结果张量的维度信息可以免去人工计算的麻烦。
使用张量的第二类情况是计算图构造完成后,张量可以用来获取计算结果,也就是真实的数字。虽然张量本身没有存储具体数字,但是通过会话(session)可以得到具体是数字

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值