Tensorflow基础概念回顾

1.Tensorflow运行主流程

构建计算图(tf.Graph)->运行计算图

2.计算图构成

  • 操作(简称“op”):图的节点。操作描述了消耗和生成张量的计算。

  • 张量:图的边。它们代表将流经图的值。大多数 TensorFlow 函数会返       回 tf.Tensors

重要提示tf.Tensors 不具有值,它们只是计算图中元素的手柄。

3.张量

tensorflow操作和传递的主要对象是 tf.Tensortf.Tensor 对象表示一个部分定义的计算,最终会生成一个值。TensorFlow 程序首先会构建一个 tf.Tensor 对象图,详细说明如何基于其他可用张量计算每个张量,然后运行该图的某些部分以获得期望的结果。

张量属性

  • 数据类型(如float32、int32和string)
  • 形状

张量中的每个元素都具有相同的数据类型,且该数据类型一定是已知的。形状,即张量的维数和每个维度的大小,可能只有部分已知。如果其输入的形状也完全已知,则大多数操作会生成形状完全已知的张量,但在某些情况下,只能在执行图时获得张量的形状。

张量切片类似于numpy.在评估 张量result 时,会评估所有影响 张量result 的元素。

4.特殊张量

4.1变量tf.variable,创建、初始化和应用

tf.Variable 表示可通过对其运行操作来改变其值的张量.与tf.Tensor对象不同,tf.Variable存在于单个session.run调用的上下文之外。在Tensorflow内部,tf.Variable会存储持久性张量。具体op允许你读取和修改此张量的值。这些修改在多个tf.Session之间是可见的,因此对于一个tf.Variable,多个工作器可以看到相同的值。

创建变量tf.get_variable,只需提供名称和形状即可.默认情况下,此变量将具有 dtypetf.float32,其初始值将通过 tf.glorot_uniform_initializer 随机设置。

my_variable = tf.get_variable("my_variable", [1, 2, 3])

变量必须先初始化后才可使用。如果在低级别Tensorflow API中进行变成,则必须明确初始化变量。tf.contrib.slimtf.estimator.Estimator 和 Keras 等大多数高级框架在训练模型前会自动为您初始化变量。

要在训练开始前一次性初始化所有可训练变量,请调用 tf.global_variables_initializer()

4.2变量集合

Tensorflow提供了集合,他们是张量或其他对象的命名列表。

默认情况下,每个 tf.Variable 都放置在以下两个集合中:

如果您不希望变量可训练,可以将其添加到 tf.GraphKeys.LOCAL_VARIABLES 集合中。例如,以下代码段展示了如何将名为 my_local 的变量添加到此集合中:

my_local = tf.get_variable("my_local", shape=(),
collections=[tf.GraphKeys.LOCAL_VARIABLES])

local变量在的集合, 用tf.local_variables_initializer()初始化

collections=[tf.GraphKeys.LOCAL_VARIABLES]

一般建立的变量(就是tf.Variable())在的集合,用tf.global_variables_initializer()初始化

collections=[tf.GraphKeys.VARIABLES]

match_filenames_once函数最后一行可以看到使用了local Variable,所以session里面要对local变量初始化,对全局变量初始化没用。


def match_filenames_once(pattern, name=None):
  """Save the list of files matching pattern, so it is only computed once.

  Args:
    pattern: A file pattern (glob), or 1D tensor of file patterns.
    name: A name for the operations (optional).

  Returns:
    A variable that is initialized to the list of files matching the pattern(s).
  """
  with ops.name_scope(name, "matching_filenames", [pattern]) as name:
    return vs.variable(
        name=name, initial_value=io_ops.matching_files(pattern),
        trainable=False, validate_shape=False,
        collections=[ops.GraphKeys.LOCAL_VARIABLES])

4.3共享变量

Tensorflow支持两种共享变量的方式:

  • 显示传递tf.Variable对象
  • 将tf.Variable对象隐式封装在tf.variable_scope对象内

变量作用域允许您在调用隐式创建和使用变量的函数时控制变量重用。作用域还允许您以分层和可理解的方式命名变量。

详细举例

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值