Tensorflow 1.2
tensorflow里面的tensor
在tensorflow 里面,所有的数据都是以张量tensor的形式存在的。张量其实就是n维矩阵的抽象。一维的张量是向量,二维的张量是矩阵。
tensorflow的数据类型
tensorflow 可接受python自带的数据类型
Tensorflow可以接受python数值,布尔值,字符串或由它们构成的列表。单个数值将被转化为标量,数值列表将转化为向量,二维列表将转化为矩阵。
例如:
下表是tensorflow的完整数据类型,在tensorflow的很多函数里面都需要显式地制定数据类型。
tensorflow 接收numpy对象
Tensorflow与numpy是紧密结合在一起的,numpy数组都可以作为参数传递给tensorflow的operator.
tensorflow中张量的形状
在tensorflow中,张量是具有形状shape属性的。Shape属性是一个元组或列表,其中元组和列表的元素个数标志该标量有多少位,第i个数字表示第i维的长度。例如:
Shape1=[1,2,3],表示一个1*2*3形状的矩阵的tensor的形状
Shape2=[None],表示一个长度任意的向量的tensor的形状
Shape3=None,表示shape3的形状任意
tensorflow的operator操作
Tensorflow的operator是一些对tensor对象进行操作的节点。他们接受0个或多个输入节点,结果计算后输出0个或多个结果。同时为了简便,tensorflow对一些常见的数学运算符进行了重载,如果运算符有一个或多个参数为tensor对象,则会有个tensorflow 的op被调用,并添加到数据流图中。Tensorflow的运算符如下图:
使用这些重载后的运算符特别方便,但是美中不足的是无法制定其属性Name,如果要指定name,仍需要调用tensorflow的operator 函数才行。
值得注意的是==也被重载了,但是其含义并不是判断两个对象值是否相等,而是判断两个tensor对象名是否引用了同一个对象。如果要判等,需要调用tf.equal()函数。
tensorflow的graph对象
Graph是一种数据结构,它负责维护里面tensor以及各个op节点。同时,graph的运行需要装载到session中才行。
为方便起见,当TensorFlow库被加载时,它会自动创建一个Graph对象,并将其作为默认的数据流图。因此,在Graph.as_default()上下文管理器之外定义的任何Op、Tensor对象都会自动放置在默认的数据流图中。
Graph对象初始化完成后,便可利用Graph.as_default()方法访问其上下文管理器,为其添加Op。结合with语句,可利用上下文管理器通知TensorFlow我们需要将一些Op添加到某个特定Graph对象中.
例如:
__author__ = 'jmh081701'
import tensorflow as tf
import numpy as np
g=tf.Graph()
with g.as_default():
a =tf.constant(5,dtype=tf.int32,name='input_a')
b =tf.constant(3,dtype=tf.int32,name='input_b')
c =tf.multiply(a,b,'mul_c')
d =tf.add(a,b,'add_d')
e =tf.add(c,d,'add_e')
sess =tf.Session(graph=g)
print(sess.run(e))
writer =tf.summary.FileWriter('mygraph',tf.get_default_graph())
writer.close()
sess.close()