import tensorflow as tf #创建一个常值运算,将作为一个节点加入到默认计算图中 hello = tf.constant("Hello,world!") #创建一个TF对话 sess=tf.Session() #运行并获得结果 print(sess.run(hello)) ''' 输出 b'Hello,world!' b表示Bytes literals(字节文字)
TensorFlow计算模型-计算图
Tensorflow=Tensor+Flow
Tensor 张量
数据结构:多维数组
Flow 流
计算模型:张量之间通过计算而转换的过程
TensorFlow是一个通过计算图的形式表述计算的编程系统,每一个计算都是计算图上的一个节点
计算图是一个有向图,由一下内容构成:
一组节点,每个节点都代表一个操作,是每一种运算
一组有向边,每条边代表节点之间的关系(数据传递和控制依赖)
计算图的实例
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) print(node3) #输出的结果不是一个具体的数字,而是一个张量的结构 #Tensor("Add:0", shape=(), dtype=float32)
计算图的执行
计算图的执行
创建计算图只是建立静态计算模型
执行对话才能提供数据并获得结果
#建立对话并显示运行结果 sess=tf.Session() print("运行sess.run(node1)的结果:",sess.run(node1)) #运行sess.run(node1)的结果:3.0 print("运行sess.run(node2)的结果:",sess.run(node2)) #运行sess.run(node1)的结果:4.0 print("运行sess.run(node3)的结果:",sess.run(node3)) #运行sess.run(node1)的结果:7.0 #关闭session sess.close()
在TensorFlow中,所有的数据都通过张量的形式来表示
从功能的角度,张量可以简单理解为多为数组
零阶张量表示标量(scalar),也就是一个数
一阶张量为向量(vector),也就是一维数组
n阶张量可以理解为一个n维数组;
张量并没有真正保存数字,它保存的是计算过程
张量的属性
Tensor("Add:0",shape=(),dtype=float32)
名字(name)
` “node:src_output”:node节点名称,src_output来自节点的第几个输出
形状(shape)
张量的维度信息,shape=(),表示是标量
类型(type)
每一个张量会有一个唯一的类型
TensorFlow会对参与运算的所有张量进行类型的检查,发现类型不匹配时会报错
张量的形状
三个术语描述张量的维度:阶(rank)、形状(shape)、维数(dimension number)
import tensorflow as tf
'''
张量的形状
'''
tens1=tf.constant([
[[1,2,2],[2,2,3]],
[[3,5,6],[5,4,3]],
[[7,0,1],[9,1,9]],
[[11,12,7],[1,3,14]]
],name="tens1")
print(tens1)
#Tensor("tens1_2:0",shape=(4,2,3),dtype=int32)
'''
解释shape=(4,2,3)
'''
scalar=tf.constant(100)
vector=tf.constant([1,2,3,4,5])
matrix=tf.constant([[1,2,3],[4,5,6]])
cube_matrix=tf.constant([
[[1],[2],[3]],
[[4],[5],[6]],
[[7],[8],[9]]
])
#输出维度
print(scalar.get_shape())
print(vector.get_shape())
print(matrix.get_shape())
print(cube_matrix.get_shape())
#输出内容如下
'''
()
(5,)
(2, 3)
(3, 3, 1)
'''
#TensorBord:TensorFlow的可视化 import tensorflow as tf #清除default graph和不断增加的节点 tf.reset_default_graph() #logdir改为自己机器上的合适路径 logdir='D:/log' #定义一个简单的计算图,实现向量加法的操作 input1=tf.constant([1.0,2.0,3.0],name="input1") input2=tf.Variable(tf.random_uniform([3]),name="input2") output=tf.add_n([input1,input2],name="add") #生成一个写日志的writer,并将当前的TensorFlow计算图写入日志。 writer=tf.summary.FileWriter(logdir,tf.get_default_graph()) writer.close()