入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

Tensorflow 基础(二)

创建时间:2017-08-03 投稿人: 浏览次数:549

Tensorflow 1.2

在tensorflow 里面,所有的数据都是以张量tensor的形式存在的。张量其实就是n维矩阵的抽象。一维的张量是向量,二维的张量是矩阵。

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()

这里写图片描述

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。