打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
TensorFlow中的计算图学习

简介:

        官网上对TensorFlow的介绍是: 一个使用数据流图(data flow graphs)技术来进行数值计算的开源软件库 

   (有点类似于这样 :)

    

        TensorFlow包含构建数据流图与计算数据流图等基本步骤,图中的节点表示数学操作,图中连结各节点的边表示多维数组,即:tensors(张量)。 张量是TensorFlow最核心的组件,所有运算和优化都是基于张量进行的。张量是基于向量和矩阵的推广,可以将标量看为零阶张量,矢量看做一阶张量,矩阵看做二阶张量。

 

tensorflow程序一般分为两个阶段:

  •   1、定义计算图所有的计算

  •   2、在session中执行计算

在这几行代码中完全体现了这两项操作

(      还额外包括了  :

  • 将数据表示为tensors;

  • 使用Variables来保持状态信息;

  • 分别使用feeds和fetches来填充数据和抓取任意的操作结果;   )

import tensorflow as tfa =tf.placeholder("float")b =tf.placeholder("float")y = tf.multiply(a,b)sess = tf.Session()print(sess.run(y, feed_dict={a: 3, b: 3}))--------------------- 转载于 作者:Jasen_Fu 

张量的阶数:

                  TensorFlow用张量表示所有的数据,张量可看成一个n维的数组或列表,在图中的节点之间流通。张量的维数称为阶,在另一片文中有相应的一些介绍。

 

 

计算图

在tensorflow程序中,系统会自动给参数一个默认的计算图,可以通过tf.get_default_graph()函数获取。

import tensorflow as tfx = tf.constant(10)y = tf.constant(15)print(x.graph)结果为:<tensorflow.python.framework.ops.Graph object at 0x000001AE613E8E80>

tensorflow可以通过tf.Graph函数生成新的计算图。不同计算图上的张量和运算都不会共享

g1=tf.Graph()with g1.as_default():    # 在计算图g1中定义变量'v',并设置初始值为0。    v=tf.get_variable('v',initializer=tf.zeros_initializer()(shape = [1]))    g2=tf.Graph()with g2.as_default():    # 在计算图g2中定义变量'v',并设置初始值微1。    v=tf.get_variable('v',initializer=tf.ones_initializer()(shape = [1]))# 在计算图g1中读取变量'v'的取值with tf.Session(graph=g1) as sess:    tf.global_variables_initializer().run()    with tf.variable_scope('',reuse=True):        # 在计算图g1中,变量'v'的取值应该为0,下一行代码会输出[0.]。        print(sess.run(tf.get_variable('v')))# 在计算图g2中读取变量'v'的取值with tf.Session(graph=g2) as sess:    tf.global_variables_initializer().run()    with tf.variable_scope('',reuse=True):        # 在计算图g2中,变量'v'的取值应该为1,下一行代码会输出[1.]。        print(sess.run(tf.get_variable('v')))

############# 代码借鉴于https://www.cnblogs.com/hypnus-ly/p/8040951.html 这位朋友的博客#######

tensorflow中的计算图不仅可以用来隔离张量和计算,它还提供了管理张量和计算的机制,具体的可以到上面这位朋友的博客中看。

 

import tensorflow as tfx = tf.constant(10)y = tf.constant(15)print(x y)结果:   Tensor("add_1:0", shape=(), dtype=int32)

我们观察一下这里的输出信息,一共是三个,代表了张量在存储时候的三种属性:

                                                                         名字(name)、维度(shape)和类型(type)

其中,name属性以“node:src_output”的形式表示,node表示节点的名称,src_output表示当前张量来自节点的第几个输出。

还可以通过result.get_shape函数来获取结果张量的维度信息。

 

tensorflow中session的讲解

创建session的三种方式:

# 1、 创建一个会话with tf.Session() as sess:    print(sess.run(result))
# tensorflow中需要手动指定默认会话,当该会话指定后,可以通过tf.Tensor.eval函数来计算一个张量的取值。# 2、 创建一个默认的会话sess=tf.Session()with sess.as_default():   # 需要在这里先指定一个会话,也就是指定一个sess的名称(有点类似于namespace吧)    print(result.eval())
# 3、 创建一个会话sess=tf.Session()
# 下面两个命令等价print(sess.run(result))print(result.eval(session=sess))
# 在交互式环境下,使用设置默认会话的方法来获取张量的取值更加方便,tensorflow提供了一种在交互式环境下直接构建# 默认会话的函数,tf.InteractiveSession。该函数会自动将生成的会话注册为默认会话。sess= tf.InteractiveSession()print(result.eval())sess.close()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

来源:http://www.icode9.com/content-4-53751.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
TensorFlow是什么?怎么用?终于有人讲明白了
TensorFlow极速入门
TensorFlow基础入门十大操作总结
谷歌机器学习框架 ---- TensorFlow
TensorFlow学习系列(三):保存/恢复和混合多个模型
DL框架之TensorFlow:深度学习框架TensorFlow Core(低级别TensorFlow API)的简介、安装、使用方法之详细攻略
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服