本文实例讲述了Python Tensor FLow简单使用方法。分享给大家供大家参考,具体如下:
1、基础概念
Tensor表示张量,是一种多维数组的数据结构。Flow代表流,是指张量之间通过计算而转换的过程。TensorFLow通过一个计算图的形式表示编程过程,数据在每个节点之间流动,经过节点加工之后流向下一个节点。
计算图是一个有向图,其组成如下:节点:代表一个操作。边:代表节点之间的数据传递和控制依赖,其中实线代表两个节点之间的数据传递关系,虚线代表两个节点之间存在控制相关。
张量是所有数据的表示形式,可以将其理解为一个多维数组。零阶张量就是标量(scalar),表示一个数,一阶张量为一维数组,即向量(vector)。n阶张量也就是n维数组。张量并不保存具体数字,它保存的是计算过程。
下面的例子是将节点1、2的值相加得到节点3。
import tensorflow as tf
node1=tf.constant(3.0,tf.float32,name='node1') #创建浮点数节点
node2=tf.constant(4.0,tf.float32,name='node2')
node3=tf.add(node1,node2) #节点三进行相加操作,源于节点1、2
ses=tf.Session()
print(node3) #输出张量:Tensor("Add_3:0", shape=(), dtype=float32)
print(ses.run(node3)) #通过会话运行节点三,将节点1、2相加,输出:7.0
ses.close() #不使用时,关闭会话
直接print(node3)输出的结果不是具体的值,而是张量结构。因为创建计算图只是建立了计算模型,只有会话执行run()才能获得具体结果。
Tensor("Add_3:0", shape=(), dtype=float32)中,Add表示节点名称,3表示这是该节点的第3个输出。shape表示张量的维度信息,()代表标量。dtype表示张量的类型,每个张量的类型唯一,如果不匹配会报错,不带小数点的默认类型为int32,带小数点默认为float35。下面的例子为更复杂的张量类型:
tensor1=tf.constant([[[1,1,1],[1,2,1]],
[[2,1,1],[2,2,1]],
[[3,1,1],[3,2,1]],
[[4,1,1],[4,2,1]]],name='tensor1')
print(tensor1)
ss=tf.Session()
print(ss.run(tensor1)[3,0,0]) #访问tensor1的具体元素
#输出:Tensor("tensor1:0", shape=(4, 2, 3), dtype=int32) 4