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)
View Code

计算图的执行

计算图的执行
创建计算图只是建立静态计算模型
执行对话才能提供数据并获得结果

#建立对话并显示运行结果
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() 
12-26 08:56