目录
占位符:tf.placeholder函数
插入一个张量的占位符,这个张量将一直被提供.
注意:如果计算,该张量将产生一个错误,其值必须使用 feed_dict 可选参数来进行 session . run()、Tensor.eval() 或 oper.run().
函数形式:
tf.placeholder( dtype, shape=None, name=None )
参数:
- dtype:数据类型。常用的是tf.float32,tf.float64等数值类型
- shape:数据形状。默认是None,就是一维值,也可以是多维(比如[2,3], [None, 3]表示列是3,行不定)
- name:名称
返回值:
一个可能被用作提供一个值的句柄的张量,但不直接计算.
构建图形:tf.name_scope函数
返回在定义 Python 操作时使用的上下文管理器.
该上下文管理器验证给定的 values 来自同一个图形,使该图形成为默认图形,并在该图形中推送名称范围(参考 tf.Graph.name_scope).
tf.name_scope函数形式:
tf.name_scope( name, default_name=None, values=None )
参数:
- name:传递给 op 函数的 name 参数
- default_name:如果 name 参数为 None 则使用默认的名称
- 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 )
参数:
- value:输出类型 dtype 的常量值 (或列表)
- dtype:所得张量的元素类型
- shape:所得张量的可选维度
- name:张量的可选名称
- 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 )
参数:
- shape:一维整数张量或 Python 数组.输出张量的形状
- minval:dtype 类型的 0-D 张量或 Python 值;生成的随机值范围的下限;默认为0
- maxval:dtype 类型的 0-D 张量或 Python 值.要生成的随机值范围的上限.如果 dtype 是浮点,则默认为1
- dtype:输出的类型:float16、float32、float64、int32、orint64
- seed:一个 Python 整数.用于为分布创建一个随机种子.查看 tf.set_random_seed 行为
- 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 )
参数:
- a:一个 Tensor
- perm:a 的维数的排列
- name:操作的名称(可选)
- 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 )
参数:
- params:表示完整的 embedding 张量的单张量,或除了第一维之外全部具有相同 shape 的 P 张量列表,表示切分的 embedding 张量.或者,一个 PartitionedVariable,通过沿维度0进行分区创建.对于给定的 partition_strategy,每个元素的大小必须适当
- ids:一个 int32 或 int64 类型的 Tensor,包含要在 params 中查找的 id
- partition_strategy:指定切分策略的字符串,在 len(params) > 1 的情况下使用.目前支持两种切分方式:"div"和"mod",默认是"mod"
- name:操作的名称(可选)
- validate_indices:已弃用.如果将此操作分配给 CPU,则 indices 中的值始终被验证为在范围内.如果分配给 GPU,则超出范围的 indices 会导致安全的但未指定的行为,这可能包括引发错误
- 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 )
参数:
- lengths:整数张量,其所有值小于等于maxlen.
- maxlen:标量整数张量,返回张量的最后维度的大小;默认值是lengths中的最大值.
- dtype:结果张量的输出类型.
- 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