Tensorflow的初学习进程(6)——张量

张量就是Tensor,所以对tensorflow来说,tensor就是一个比较重要的概念了。

张量的概念:

在tensorflow中,所有的数据由张量的形式来表示。从功能的角度来说,张量就是可以被理解是一个多维数组。0阶张量为一个标量,1阶张量就是一维数组,n阶张量就是n维数组。

但是在tensorflow中的实现却不是直接采用数组的形式,它是对tensorflow中运算结果的引用,它本身并没有真正地保存数字,它保存的是数字的计算过程。

比如下面的例子

import tensorflow as tf
 
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) """

所以从上面可知,tensorflow的计算结果不是一个具体的数字,而是一个张量的结构。一个张量的主要保存三个属性:名字(name),维度(shape)和类型(type)。

名字:名字不仅是张量的唯一的标识符,也给出张量是如何计算的。因为tensorflow的计算都是通过计算图的模型来建立,计算图上每一个节点都是一个计算,计算的结果保存在张量中,所以张量和计算图上结点所代表的计算结果是对应的。张量的命名可以通过:“node:sec_output”的形式来给出。node是节点的名称,src_output表示当前张量来自结点的第几个输出。上面的“add:0”就是这样的形式表示的。

维度:这个属性描述张量的维度信息,shape=(2,)说明这个张量是个一维数组,这个数组的长度维为2。维度比较重要,在之后的学习中再提。

类型:每一个张量都由一个唯一的类型,在运算中,tensorflow会对张量的种类进行判断,如果类型不匹配的话,就无法进行计算。类型可以创建张量时指定,比如在最后加入“dtype = float32”,可以将一个int型的转化成float型的,如果不申明的话,系统就会自动判断。

张量的使用:

和tensorflow的计算模型相比,tensorflow的数据模型相对比较简单。张量的使用主要可以总结成两类

  1. 第一类是对中间的计算结果的引用。当一个计算包含很多计算结果时,使用张量可以提高代码的可读性。这就好比在一个程序中对一个中间的值进行赋值给新的变量,可以观察在计算过程中它的变化。
  2. 第二类是当计算图构造完成之后,张量可以用来获得计算结果,也就是获得真正的数字,虽然张量自己本身没有存储具体的数字,但是通过会话操作可以得到具体的数字

猜你喜欢

转载自blog.csdn.net/qq_35601980/article/details/89018548