TensorFlow计算模型—计算图
TensorFlow是一个通过计算图的形式来表述计算的编程系统。其中的Tnesor,代表它的数据结构,而Flow代表它的计算模型。TensorFlow中的每一个计算都是计算图上的一个节点,而节点之间的线描述了计算之间的依赖关系。
在TensorFlow程序中,系统会自动维护一个默认的计算图,通过tf.get_default_gragh函数可以获取当前默认的计算图。
除了默认的计算图,TensorFlow也支持通过tf.Graph函数来生成新的计算图。不同的计算图上的张量和运算不会共享。如下示例:
#coding:utf-8
import tensorflow as tf g1 = tf.Graph()
with g1.as_default():
#在计算图g1中定义一个变量v,并且设置初始值为0
v = tf.get_variable(name="v",initializer=tf.zeros_initializer( )(shape=[1])) g2 = tf.Graph()
with g2.as_default():
# 在计算图g2中定义一个变量v,并且设置初始值为0
v = tf.get_variable(name="v", initializer=tf.ones_initializer( )(shape=[1])) with tf.Session(graph=g1) as sess:
# 运行初始化的两种方法
init = tf.global_variables_initializer()
sess.run(init) #这个方法已经过时
#tf.initialize_all_variables().run() #这句话是什么意思?
with tf.variable_scope("",reuse=True):
#通过名字获取变量
print(sess.run(tf.get_variable("v"))) with tf.Session(graph=g2) as sess:
# 运行初始化的两种方法
init = tf.global_variables_initializer()
sess.run(init)
#tf.initialize_all_variables().run() #这句话是什么意思?
with tf.variable_scope("",reuse=True):
#通过名字获取变量
print(sess.run(tf.get_variable("v")))
上面的代码产生了两个计算图,每个计算图中定义了一个名字为“v”的变量。在计算图g1中,将v初始化为0;在计算图g2中,将v初始化为1.由此可见,当运行不同的计算图时,变量v的值也不一样。
Tensorflow中的计算图不仅仅可以用来隔离张量和运算,还可以提供管理张量和运算的机制。
计算图可以通过tf.Graph.device()函数来指定运行的设备。这是因为tensorflow使用了GPU机制。一下代码演示指派GPU的操作。
import tensorflow as tf
a = tf.constant([1,2])
b = tf.constant([3,4])
g = tf.Graph()
with g.device('/gpu:0'):
c = tf.add(a, b, "add")
with tf.Session() as sess:
print(sess.run(c))
在一个计算图中,可以通过集合(collection)来管理不同类别的资源。比如通过tf.add_to_collection()函数将资源加入一个或多个集合中。然后通过tf.get_collection获取集合中的所有资源。这里的资源可以是张量、变量或者运行Tensorflow程序所需要的队列资源等等。
TensorFlow中维护的集合列表
| 集合名称 | 集合内容 | 使用场景 |
|---|---|---|
tf.GraphKeys.VARIABLES |
所有变量 | 持久化TensorFlow模型 |
tf.GraphKeys.TRAINABLE_VARIABLES |
可学习的变量(一般指神经网络中的参数) | 模型训练、生成模型可视化内容 |
tf.GraphKeys.SUMMARIES |
日志生成相关的张量 | TensorFlow计算可视化 |
tf.GraphKeys.QUEUE_RUNNERS |
处理输入的QueueRunner | 输入处理 |
tf.GraphKeys.MOVING_AVERAGE_VARIABLES |
所有计算了滑动平均值的变量 | 计算变量的滑动平均值 |
TensorFlow计算模型—计算图的更多相关文章
- Tensorflow计算模型 —— 计算图
转载自:http://blog.csdn.net/john_xyz/article/details/69053626 Tensorflow是一个通过计算图的形式来表述计算的编程系统,计算图也叫数据流图 ...
- TensorFlow 计算模型 -- 计算图
TensorFlow是一个通过计算图的形式表述计算机的编程系统 TensorFlow程序一般分为两个阶段,第一个阶段需要定义计算图中所有的计算(变量) 第二个阶段为执行计算 如以下代码 import ...
- Tensorboard教程:Tensorflow命名空间与计算图可视化
Tensorflow命名空间与计算图可视化 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 强烈推荐Tensorflow实战Google深度学习框架 实验平台: Tensorflow ...
- TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人
简介 TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人. 文章包括一下几个部分: 1.为什么要尝试做这个项目? 2.为 ...
- Python之TensorFlow的模型训练保存与加载-3
一.TensorFlow的模型保存和加载,使我们在训练和使用时的一种常用方式.我们把训练好的模型通过二次加载训练,或者独立加载模型训练.这基本上都是比较常用的方式. 二.模型的保存与加载类型有2种 1 ...
- Tensorflow 保存模型 & 在java中调用
本节涉及: 保存TensorFlow 的模型供其他语言使用 java中调用模型并进行预测计算 一.保存TensorFlow 的模型供其他语言使用 如果用户选择“y” ,则执行下面的步骤: 判断程序执行 ...
- [tensorflow] 线性回归模型实现
在这一篇博客中大概讲一下用tensorflow如何实现一个简单的线性回归模型,其中就可能涉及到一些tensorflow的基本概念和操作,然后因为我只是入门了点tensorflow,所以我只能对部分代码 ...
- TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人。
简介 TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人. 文章包括一下几个部分: 1.为什么要尝试做这个项目? 2.为 ...
- 性能测试学习之二 ——性能测试模型(PV计算模型)
PV计算模型 现有的PV计算公式是: 每台服务器每秒平均PV量 =( (总PV*80%)/(24*60*60*40%))/服务器数量 =2*(总PV)/* (24*60*60) /服务器数量 通过定积 ...
随机推荐
- 为windows phone listbox 添加触摸倾斜效果
在开发windows phone程序时,经常会用到listbox或者是longlistselector等列表控件.当点击时没有触摸效果体验会稍差一些,像windows phone中的设置页面一样,点击 ...
- Codeforces VK Cup 2015 A.And Yet Another Bracket Sequence(后缀数组+平衡树+字符串)
这题做得比较复杂..应该有更好的做法 题目大意: 有一个括号序列,可以对其进行两种操作: · 向里面加一个括号,可以在开头,在结尾,在两个括号之间加. · 对当前括号序列进 ...
- 2017 ICPC beijing F - Secret Poems
#1632 : Secret Poems 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 The Yongzheng Emperor (13 December 1678 – ...
- LOJ2351:[JOI2017/2018决赛]毒蛇越狱——题解
https://loj.ac/problem/2351 参考:https://www.cnblogs.com/ivorysi/p/9144676.html 但是参考博客讲解太吓人了,我们换一种通俗易懂 ...
- C++中swap函数
本文是我用到swap函数时,对其产生好奇,所以结合网上有关博文写下的.个人水平有限,若有错误的地方,欢迎留言指出.谢谢! 一.通用的函数交换模板 template<class T> voi ...
- [Leetcode] search in rotated sorted array 搜索旋转有序数组
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e.,0 1 2 4 5 6 7might ...
- mongo日常操作备忘
修改 普通修改 插入数据: db.students.insert({ "name":"swrd", "age":32, "grad ...
- Leetcode 295. 数据流的中位数
1.题目要求 中位数是有序列表中间的数.如果列表长度是偶数,中位数则是中间两个数的平均值. 例如, [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 + 3) / 2 = 2.5 设计一个 ...
- js的数据类型--字符串
js的数据类型——字符串 这篇我们来说说js的第二种数据类型——字符串. js的内置功能之一就是字符串拼接.如果将加号(+)运算符用于数字,表示两数相加.但将它作用于字符串,则表示字符串拼接,将第二个 ...
- cas 服务端、客服端详细配置
一.准备 1.下载官方源码 CAS-Server下载地址:https://www.apereo.org/projects/cas/download-cas CAS-Client下载地址:http:// ...