tensorflow计算图(如何用TensorFlow构建RNN)

本文目录
如何用TensorFlow构建RNN
基本使用
使用 TensorFlow, 你必须明白 TensorFlow:
使用图 (graph) 来表示计算任务。
在被称之为 会话 (Session) 的上下文 (context) 中执行图。
使用 tensor 表示数据。
通过 变量 (Variable) 维护状态。
使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据。
综述
TensorFlow 是一个编程系统, 使用图来表示计算任务。 图中的节点被称之为 op
(operation 的缩写)。 一个 op 获得 0 个或多个 Tensor, 执行计算,
产生 0 个或多个 Tensor. 每个 Tensor 是一个类型化的多维数组。
例如, 你可以将一小组图像集表示为一个四维浮点数数组,
这四个维度分别是 .
一个 TensorFlow 图描述了计算的过程。 为了进行计算, 图必须在 会话 里被启动。
会话 将图的 op 分发到诸如 CPU 或 GPU 之类的 设备 上, 同时提供执行 op 的方法。
这些方法执行后, 将产生的 tensor 返回。 在 Python 语言中, 返回的 tensor 是
numpy ndarray 对象; 在 C 和 C++ 语言中, 返回的 tensor 是
tensorflow::Tensor 实例。
计算图
TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段。 在构建阶段, op 的执行步骤
被描述成一个图。 在执行阶段, 使用会话执行执行图中的 op.
例如, 通常在构建阶段创建一个图来表示和训练神经网络, 然后在执行阶段反复执行图中的训练 op.
TensorFlow 支持 C, C++, Python 编程语言。 目前, TensorFlow 的 Python 库更加易用,
它提供了大量的辅助函数来简化构建图的工作, 这些函数尚未被 C 和 C++ 库支持。
三种语言的会话库 (session libraries) 是一致的。
构建图
构建图的第一步, 是创建源 op (source op)。 源 op 不需要任何输入, 例如 常量 (Constant)。 源 op 的输出被传递给其它 op 做运算。
Python 库中, op 构造器的返回值代表被构造出的 op 的输出, 这些返回值可以传递给其它
op 构造器作为输入。
TensorFlow Python 库有一个默认图 (default graph), op 构造器可以为其增加节点。 这个默认图对
许多程序来说已经足够用了。 阅读 Graph 类 文档
来了解如何管理多个图。
import tensorflow as tf
# 创建一个常量 op, 产生一个 1x2 矩阵。 这个 op 被作为一个节点
# 加到默认图中。
#
# 构造器的返回值代表该常量 op 的返回值。
matrix1 = tf.constant()
# 创建另外一个常量 op, 产生一个 2x1 矩阵。
matrix2 = tf.constant()
# 创建一个矩阵乘法 matmul op , 把 ’matrix1’ 和 ’matrix2’ 作为输入。
# 返回值 ’product’ 代表矩阵乘法的结果。
product = tf.matmul(matrix1, matrix2)
默认图现在有三个节点, 两个 constant() op, 和一个matmul() op. 为了真正进行矩阵相乘运算, 并得到矩阵乘法的
结果, 你必须在会话里启动这个图。
在一个会话中启动图
构造阶段完成后, 才能启动图。 启动图的第一步是创建一个 Session 对象, 如果无任何创建参数,
会话构造器将启动默认图。
欲了解完整的会话 API, 请阅读Session 类。
# 启动默认图。
sess = tf.Session()
# 调用 sess 的 ’run()’ 方法来执行矩阵乘法 op, 传入 ’product’ 作为该方法的参数。
# 上面提到, ’product’ 代表了矩阵乘法 op 的输出, 传入它是向方法表明, 我们希望取回
# 矩阵乘法 op 的输出。
#
# 整个执行过程是自动化的, 会话负责传递 op 所需的全部输入。 op 通常是并发执行的。
#
# 函数调用 ’run(product)’ 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op) 的执行。
#
# 返回值 ’result’ 是一个 numpy `ndarray` 对象。
result = sess.run(product)
print result
# ==》
# 任务完成, 关闭会话。
sess.close()
Session 对象在使用完后需要关闭以释放资源。 除了显式调用 close 外, 也可以使用 "with" 代码块
来自动完成关闭动作。
with tf.Session() as sess:
result = sess.run()
print result
在实现上, TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU
或 GPU)。 一般你不需要显式指定使用 CPU 还是 GPU, TensorFlow 能自动检测。 如果检测到 GPU, TensorFlow
会尽可能地利用找到的第一个 GPU 来执行操作。
如果机器上有超过一个可用的 GPU, 除第一个外的其它 GPU 默认是不参与计算的。 为了让 TensorFlow
使用这些 GPU, 你必须将 op 明确指派给它们执行。 withDevice 语句用来指派特定的 CPU 或 GPU
初学深度学习选择哪个框架
深度学习目前的应用领域很多,主要是计算机视觉和自然语言处理,以及各种预测等。对于计算机视觉,可以做图像分类、目标检测、视频中的目标检测等,对于自然语言处理,可以做语音识别、语音合成、对话系统、机器翻译、文章摘要、情感分析等。
对于刚入行深度学习,想从事人工智能工业应用和研发的小白来说,选择一个适合自己的深度学习框架显得尤为重要。那么在选择深度学习框架的时候,要注意哪些内容呢?
通常我们在选择框架时要考虑易用性、性能、社区、平台支持等问题。初学者应该考虑容易上手的框架,偏工业应用的开发者可以考虑使用稳定性高、性能好的框架,偏研究性的开发者,一般选择易用而且有领先的模型基线的框架。
目前这个阶段,TensorFlow因为背靠谷歌公司这座靠山,再加上拥有庞大的开发者群体,而且采用了称为“可执行的伪代码”的Python语言,成为最受欢迎的主流框架之一。一些外围的第三方库(如Keras、TFLearn)也基于它实现了很多成果,Keras还得到TensorFlow官方的支持。TensorFlow支持的上层语言也在逐渐扩大,对于不同工程背景的人转入的门槛正在降低。
因此,对于刚入行深度学习的小白,TensorFlow是一个非常好的选择,掌握TensorFlow对以后的求职发展很有帮助。
ug模型去参数之后如何查看
1、使用TensorFlowLiteModelAnalyzer:TensorFlowLiteModelAnalyzer是一款功能强大的可视化工具,可以显示TensorFlowLite模型的网络结构、图层信息、输入输出张量、权重分布等信息。
2、使用Tensorboard:如果你使用的是TensorFlow框架,那么Tensorboard是一个非常有用的工具,通过Tensorboard,您可以可视化模型的计算图和参数直方图,并且可以用于比较不同版本的模型性能和效率。
3、使用ONNXRuntime:ONNXRuntime是一个跨平台的高性能推理引擎,支持多种硬件和操作系统。
Tensorflow——关于loss
结果:你会发现第一个输出与第三个一致,第二个输出和第四个一致
reduce_sum 是 tensor 内部求和的工具。其参数中:
其实在reduce_sum()中,是从维度上去考虑的(感觉这个Matlab中数据的概念比较像)
调用 reduce_sum(arg1, arg2) 时,参数 arg1 即为要求和的数据, arg2 有两个取值分别为 0 和 1 ,通常用 reduction_indices= 来传递参数。从上图可以看出,当 arg2 = 0 时,是纵向对矩阵求和,原来矩阵有几列就得到几个值;相似地,当 arg2 = 1 时,是横向对矩阵求和;当省略 arg2 参数时,默认对矩阵所有元素进行求和。
在 reduce_sum() 中就是按照求和的方式对矩阵降维。
计算张量的各个维度上的元素的平均值。
l2_loss一般用于优化目标函数中的正则项,防止参数太多复杂容易过拟合(所谓的过拟合问题是指当一个模型很复杂时,它可以很好的“记忆”每一个训练数据中的随机噪声的部分而忘记了要去“学习”训练数据中通用的趋势)
结果输出:
7.0
计算的过程:
题外话
正则化的基本思想是向损失函数添加一个惩罚项用于惩罚大的权重,隐式地减少自由参数的数量,所以可以达到弹性地适用不同数据量训练的要求而不产生过拟合的问题。
正则化方法是将惩罚因子加入到各层的参数或激活函数中。其实现位置通常是在模型的optimization里,在计算损失函数时将该惩罚因子加进去。
***隐藏网址***
tf.trainable_variables 返回所有 当前计算图中 在获取变量时未标记 trainable=False 的变量集合.
输出
tensorflow和pytorch哪个好
PyTorch和TensorFlow都很好,各有千秋。
PyTorch和TensorFlow是目前最主流的两个深度学习框架,绝大多数研究者会选择PyTorch或者TensorFlow进行深度学习的入门学习。图1展示了近两年来几个主流深度学习框架的Google指数,其中PyTorch和TensorFlow的热度不相上下,均遥遥领先于其他框架。
Tensorflow的社区比PyTorch大得多。这意味着更容易找到学习Tensorflow的资源,也更容易找到问题的解决方案。另外,小普还注意到,许多教程和MOOC都涵盖了Tensorflow,这是因为与Tensorflow相比,PyTorch是一个相对较新的框架。所以,在资源方面,我们就可以找到比PyTorch多得多的关于Tensorflow的内容。
PyTorch和TensorFlow的功能
TensorFlow是由Google开发的,是一个功能强大、灵活性高的框架,广泛应用于工业界和学术界。TensorFlow支持各种操作系统和设备,支持分布式计算、多GPU计算等,具有很好的可扩展性和高效性。同时,TensorFlow的文档和教程比较全面,有很多优秀的社区支持和工具包,使用广泛。
而PyTorch是由Facebook开发的,是一个易于使用、动态计算图的框架,支持GPU加速和自动求导,因此在研究和实验中受到欢迎。PyTorch的文档简单明了,易于上手,对于初学者来说比较友好,同时支持Python语言,便于快速原型设计和实验。
Tensorflow计算图是什么
tensorflow是一个通过计算图的形式来表述计算的编程系统,可以把计算图看做一种有向图,tf中每一个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系

更多文章:
在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)
2026年10月11日 05:20
countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)
2026年10月11日 03:30
正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)
2026年10月11日 03:00
orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)
2026年10月10日 23:00
display的用法(display是什么意思 详解display的含义和用法)
2026年10月10日 22:00
html全部居中代码(怎么让网页居中显示,html如何让网页居中)
2026年10月10日 21:10




