tensorflow深度学习笔记(1)张量

资料来源:《TensorFlow实战Google深度学习框架》   郑泽宇 梁博文 顾思宇 著 (第二版) 电子工业出版社  


一、概念

  张量,可以理解为多维数组。

  比如,0阶张量表示一个数,也就是一个标量(scalar);1阶张量表示一维数组;n阶张量表示n维数组。

 

二、说明

在tensorflow中,张量并没有真正保存数字,它保存的是如何得到一些数字的计算过程。以向量加法为例,当运行如下代码时,并不会得到加法结果,而会得到对结果的一个引用

import tensorflow as tf
#tf.constant  是一个计算过程,这个计算的结果为一个张量,保存在变量a中
a = tf.constant([1.0,2.0],name="a")  #a是一个张量
b = tf.constant([2.0,3.0],name="b")  #b是一个张量
result = tf.add(a,b,name="add")。    #result是一个张量
print (result)
'''
将会输出:
Tensor("add:0",shape=(2,),dtype=float32)
'''

从以上代码可以看出,tesnorflow的计算结果不是一个具体的数字,而是一个张量的结构。

 

三、属性

一个张量有三个属性:名字,维度,类型(name,shape,type)。

在代码中有如下语句:

result = tf.add(a,b,name="add")

这表示:result是个张量,“add:0”是它的名字,该名字的含义是说,它是“add”节点输出的第一个结果(编号从0开始)。(add节点也就是我们说的计算节点)

shape=(2,)就是维度,说明张量result是一个一维数组,数组的长度是2。

float32就是类型,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_3:0", shape=(2,), dtype=float32)'
'''

如果将第一个加数指定成实数类型“a=tf.constant([1,2],name="a",dtype=tf.float32)”,那么就不会报错了。

tensorflow虽然会给出默认的类型,如:不带小数点的数会被默认为int32, 带小数点的数会被默认为float32。但是使用默认类型可能会导致潜在的类型不匹配问题,所以一般建议通过指定dtype指定类型

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/Johnisjohn/article/details/88071881