Tensorflow计算、数据和运行模型
来源:互联网 发布:程序化交易策略源码 编辑:程序博客网 时间:2024/06/05 05:00
参考书籍《Tensorflow实战Google深度学习框架》郑泽宇等
Tensorflow是一款谷歌开源的深度学习工具,与其他深度学习工具(比如caffe、Deeplearning4j等)相比,其受关注度和欢迎程度尤为突出。在谷歌内部,Tensorflow已经广泛用于语音搜索、广告、电商、图片、街景图、翻译、Youtube等众多产品中。
Tensorflow计算模型—计算图
Tensorflow中一个重要的概念就是计算图,tensorflow中所有计算都会转化为计算图中的节点,而节点之间的边描述了计算之间的依赖关系。下图中的节点add代表一个加法计算,a和b两个常量不依赖于其他任何计算。add计算依赖读取两个常量的取值,图中可以看到有一条从a到add的有向边和从b到add的有向边。图中没有任何计算依赖于add的结果,所以节点add没有任何指向其他节点的边。Tensorflow中所有程序都可以通过类似的计算图的形式来表示,也是软件的基本计算模型。
Tensorflow的程度一般分为两个阶段。第一个阶段定义计算图中所有的计算,第二个阶段为执行计算。在下面计算过程中,Tensorflow会自动将定义的计算转化为计算图上的节点。在tensorflow中,系统会自动维护一个默认的德计算图。注意,tensorflow中变量存取的不是值,而是取值的计算过程。
import tensorflow as tf #替换模块名称,使程序更简洁a=tf.constant([1.0, 2.0], name="a") b=tf.constant([2.0, 3.0], name="b")result=a+bprint(a.graph is tf.get_default_graph())print(result)
当然,除了使用默认的计算图,也可以通过tf.Graph函数来生成新的计算图,这样可使不同计算图上的张量和运算不会共享。
Tensorflow数据模型—张量
Tensorflow中,所有的数据都通过张量形式来表示。从功能角度上将,张量可被简单理解为多维数组,零阶张量为标量,表示一个数;一阶张量为一个一维数组;第n阶张量可理解为一个n维数组。与数组不同的是,数组一般存储的是计算的结果,而张量存储的是运算结果的引用,即张量保存的是如何得到结果的计算过程。上文中代码result输出是一个张量(包含名字、维度和类型),如下所示:
Tensor("add_4:0", shape=(2,), dtype=float32)
张量的第一个属性名字不仅是张量的唯一标识符,同时还给出这个张量是如何计算出来的。”add_4”表示计算图中节点的名称,而冒号后面的”0”表示当前张量来自该节点第一个输出(编号从0开始)。
张量的第二个属性是维度shape,描述张量的维度信息。Shape=(2,)表示张量为一个一维数组,数组长度为2。
张量的第三个属性是类型,每个张量都有一个唯一的类型。Tensorflow会对参与运算的所有张量进行类型的检查,当发现类型不匹配时会报错。
张量的使用大致可分为两类:第一类,张量用于对中间计算结果的引用;第二类,张量用于获取最终的计算结果。
Tensorflow运行模型—会话
前面介绍了tensorflow的计算模型和数据存储,本节将介绍tensorflow如何将利用会话(session)模型来执行定义好的运算。会话拥有并管理tensorflow程序运行时的所有资源。注意当计算完成后需要关闭会话来完成资源回收,否则会造成资源泄漏。
Tensorflow中会话模式一般有两种,第一种模式需要明确调用会话生成函数和关闭会话函数,示例代码如下。此种模式有一个问题,当程序因为异常退出时,关闭会话的函数不会执行,从而导致资源泄漏。
import tensorflow as tfa=tf.constant([1.0, 2.0], name="a")b=tf.constant([2.0, 3.0], name="b")result=a+bsess=tf.Session()sess.run(result)sess.close()
为了解决这个问题,tensorflow可通过python上下文管理器来使用会话,此为会话的第二种模式。上下文管理机制,只需要将所有的计算放在with内部即可。当程序计算异常退出时,必然会退出上下文管理机制,那么就会释放所有的资源,不会造成资源泄漏。
import tensorflow as tfa=tf.constant([1.0, 2.0], name="a")b=tf.constant([2.0, 3.0], name="b")result=a+bwith tf.Session() as sess: sess.run(result)
- Tensorflow计算、数据和运行模型
- 2、TensorFlow 的计算模型、运行模型、数据模型
- TensorFlow计算模型--计算图
- TensorFlow计算模型--计算图
- C++加载运行Tensorflow模型
- TensorFlow运行模型--会话session
- Tensorflow计算模型 —— 计算图
- (二)TensorFlow计算模型-----计算图
- tensorflow MNIST数据集的训练(线性模型)及tensorboard计算结果可视化
- 如何让TensorFlow模型运行提速36.8%
- tensorflow保存 和 加载模型
- Tensorflow保存和读取模型
- Tensorflow 保存和加载模型
- 保存和读取 TensorFlow 模型
- tensorflow模型save和restore
- tensorflow保存和加载模型
- SMAQ:海量数据的存储计算和查询模型(译)
- 海量数据的存储计算和查询模型
- java影院票务管理系统项目开发计划
- 一个网站 Code/Android/
- 深度学习训练模型调参策略
- 柯洁大战 AlphaGo 三盘皆输
- JZOJ 3447【NOIP2013模拟联考2】摘取作物
- Tensorflow计算、数据和运行模型
- Codevs1213 解的个数
- matlab:绘制三维曲线
- Spring学习笔记之缓存数据
- Linux搭建DOS编程环境
- 两个数之和C语言实现
- Wampserver一直是橙色的
- 文章标题
- Visual Stdio 2015打包安装项目的方法(使用Visual Studio Installer)