Tensorflow的一些函数

目录

占位符:tf.placeholder函数

构建图形:tf.name_scope函数

tf.variable_scope函数

tf.constant函数

随机值函数:tf.random_uniform函数

tf.transpose函数

tf.nn.embedding_lookup函数

rnn.LSTMStateTuple

张量变换函数:tf.sequence_mask


占位符:tf.placeholder函数

插入一个张量的占位符,这个张量将一直被提供. 

注意:如果计算,该张量将产生一个错误,其值必须使用 feed_dict 可选参数来进行 session . run()、Tensor.eval() 或 oper.run().

函数形式:

tf.placeholder(
    dtype,
    shape=None,
    name=None
)

参数:

  1. dtype:数据类型。常用的是tf.float32,tf.float64等数值类型
  2. shape:数据形状。默认是None,就是一维值,也可以是多维(比如[2,3], [None, 3]表示列是3,行不定)
  3. name:名称

返回值:

一个可能被用作提供一个值的句柄的张量,但不直接计算.

构建图形:tf.name_scope函数

返回在定义 Python 操作时使用的上下文管理器. 

该上下文管理器验证给定的 values 来自同一个图形,使该图形成为默认图形,并在该图形中推送名称范围(参考 tf.Graph.name_scope).

tf.name_scope函数形式:

tf.name_scope(
    name, 
    default_name=None, 
    values=None
)

参数:

  1. name:传递给 op 函数的 name 参数
  2. default_name:如果 name 参数为 None 则使用默认的名称
  3. values:要传递给 op 函数的张量参数列表

返回值:

该函数返回用于定义 Python 操作系统的上下文管理器,生成名称范围.

可能发生的异常:

  • ValueError:如果既不提供 name 也不提供 default_name,但是提供了 values

tf.variable_scope函数

variable_scope类

用于定义创建变量(层)的操作的上下文管理器. 

此上下文管理器验证(可选)values是否来自同一图形,确保图形是默认的图形,并推送名称范围和变量范围.

如果name_or_scope不是None,则使用as is.如果scope是None,则使用default_name.在这种情况下,如果以前在同一范围内使用过相同的名称,则通过添加_N来使其具有唯一性.

变量范围允许您创建新变量并共享已创建的变量,同时提供检查以防止意外创建或共享.

tf.constant函数

创建一个常数张量。

生成的张量由 dtype 类型的值填充,如参数值和 (可选) 形状所指定。

例如:

```python #常数一维张量使用 list. tensor = tf.constant([1,2,3,4,5,6,7])=> [1 2 3 4 5 6 7] 的值填充

#常数二维张量用标量值 -1.tensor= tf.constant(-1.0,shape = [2,3])=> [[-1.-1.-1.] [-1.-1.-1.]] 填充```

tf.constant函数形式:

constant ( 
    value , 
    dtype = None , 
    shape = None , 
    name = 'Const' , 
    verify_shape = False 
)

参数:

  1. value:输出类型 dtype 的常量值 (或列表)
  2. dtype:所得张量的元素类型
  3. shape:所得张量的可选维度
  4. name:张量的可选名称
  5. verify_shape:布尔值,可以验证数值的形状

返回:

常数张量

随机值函数:tf.random_uniform函数

从均匀分布中输出随机值.

生成的值在该 [minval, maxval) 范围内遵循均匀分布.下限 minval 包含在范围内,而上限 maxval 被排除在外.

对于浮点数,默认范围是 [0, 1).对于整数,至少 maxval 必须明确地指定.

在整数情况下,随机整数稍有偏差,除非 maxval - minval 是 2 的精确幂.对于maxval - minval 的值,偏差很小,明显小于输出(2**32 或者 2**64)的范围.

tf.random_uniform函数形式:

random_uniform(
    shape,
    minval=0,
    maxval=None,
    dtype=tf.float32,
    seed=None,
    name=None
)

参数:

  1. shape:一维整数张量或 Python 数组.输出张量的形状
  2. minval:dtype 类型的 0-D 张量或 Python 值;生成的随机值范围的下限;默认为0
  3. maxval:dtype 类型的 0-D 张量或 Python 值.要生成的随机值范围的上限.如果 dtype 是浮点,则默认为1 
  4. dtype:输出的类型:float16、float32、float64、int32、orint64
  5. seed:一个 Python 整数.用于为分布创建一个随机种子.查看 tf.set_random_seed 行为
  6. name:操作的名称(可选)

返回:

用于填充随机均匀值的指定形状的张量

可能引发的异常:

  • ValueError:如果 dtype 是整数并且 maxval 没有被指定

tf.transpose函数

置换 a,根据 perm 重新排列尺寸. 

返回的张量的维度 i 将对应于输入维度 perm[i].如果 perm 没有给出,它被设置为(n-1 ... 0),其中 n 是输入张量的秩.因此,默认情况下,此操作在二维输入张量上执行常规矩阵转置.如果共轭为 True,并且 a.dtype 是 complex64 或 complex128,那么 a 的值是共轭转置和.

tf.transpose函数形式:

tf.transpose(
    a,
    perm=None,
    name='transpose',
    conjugate=False
)

参数:

  1. a:一个 Tensor
  2. perm:a 的维数的排列
  3. name:操作的名称(可选)
  4. conjugate:可选 bool,将其设置为 True 在数学上等同于 tf.conj(tf.transpose(input))

返回:

tf.transpose 函数返回一个转置 Tensor.

tf.nn.embedding_lookup函数

在 embedding 张量列表中查找 ids.

此函数用于在 params 的张量列表中执行并行查找.它是tf.gather的概括,其中params解释为大型 embedding 张量的分区.params 可以是使用带分区的 tf.get_variable() 返回的 PartitionedVariable .

如果 len(params) > 1,ids 的每个元素 id 根据 partition_strategy 在 params 元素之间被分区.在所有策略中,如果 id 空间不均匀地划分分区数,则前(max_id + 1)% len(params)个分区中的每个分区将再分配一个id.

如果 partition_strategy 是 "mod",我们将每个 id 分配给分区 p = id % len(params).例如,13个 id 分为5个分区:[[0, 5, 10], [1, 6, 11], [2, 7, 12], [3, 8], [4, 9]]

如果 partition_strategy 是 "div",我们以连续的方式将 id 分配给分区.在这种情况下,13 个 id 分为5个分区:[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10], [11, 12]]

查询的结果被连接成一个密集的张量.返回的张量的 shape 为 shape(ids) + shape(params)[1:].

tf.nn.embedding_lookup函数形式:

tf.nn.embedding_lookup(
    params,
    ids,
    partition_strategy='mod',
    name=None,
    validate_indices=True,
    max_norm=None
)

参数:

  1. params:表示完整的 embedding 张量的单张量,或除了第一维之外全部具有相同 shape 的 P 张量列表,表示切分的 embedding 张量.或者,一个 PartitionedVariable,通过沿维度0进行分区创建.对于给定的 partition_strategy,每个元素的大小必须适当
  2. ids:一个 int32 或 int64 类型的 Tensor,包含要在 params 中查找的 id
  3. partition_strategy:指定切分策略的字符串,在 len(params) > 1 的情况下使用.目前支持两种切分方式:"div"和"mod",默认是"mod"
  4. name:操作的名称(可选)
  5. validate_indices:已弃用.如果将此操作分配给 CPU,则 indices 中的值始终被验证为在范围内.如果分配给 GPU,则超出范围的 indices 会导致安全的但未指定的行为,这可能包括引发错误
  6. max_norm:如果提供该参数,embedding 值将被 L2-normalize 为 max_norm 的值

返回:

该函数与 params 中的张量具有相同类型的 Tensor.

可能引发的异常:

  • ValueError:如果 params 是空的.

rnn.LSTMStateTuple

用于存储LSTM单元的state_size,zero_state和output state的元组。按顺序存储两个元素(c,h),其中c是隐藏状态,h是输出。只有在state_is_tuple=True是才使用。

张量变换函数:tf.sequence_mask

返回一个表示每个单元的前N个位置的mask张量。

如果lengths的形状为[d_1, d_2, ..., d_n],由此产生的张量mask有dtype类型和形状[d_1, d_2, ..., d_n, maxlen],并且:

mask[i_1, i_2, ..., i_n, j] = (j < lengths[i_1, i_2, ..., i_n])

tf.sequence_mask 函数形式:

sequence_mask(
    lengths,
    maxlen=None,
    dtype=tf.bool,
    name=None
)

参数:

  1. lengths:整数张量,其所有值小于等于maxlen.
  2. maxlen:标量整数张量,返回张量的最后维度的大小;默认值是lengths中的最大值.
  3. dtype:结果张量的输出类型.
  4. name:操作的名字.

函数返回值

形状为lengths.shape + (maxlen,)的mask张量,投射到指定的dtype.

函数中可能存在的异常

  • ValueError:如果maxlen不是标量.

LINK

https://blog.csdn.net/kdongyi/article/details/82343712

https://www.imooc.com/article/22966

https://www.w3cschool.cn/tensorflow_python/tensorflow_python-ydnb2flr.html

猜你喜欢

转载自blog.csdn.net/imsuhxz/article/details/86996645