tensorflow函数一览
注意: 本文介绍的是version 1.3.0下的函数,有些函数可能在旧版本中没有。
转载请注明出处变天式的博客
前言:名词解释
tensor | 张量,可以是一个数,也可以是一个向量、矩阵或者高纬度数据 |
---|---|
operator | 操作,在tensorflow里面,函数也叫作操作 |
Uni | 一元,表示操作只有一个参数 |
Bi | 二元,表示操作有2个参数 |
element-wise | 元素级操作,表示该操作是对张量的每一个元素进行一一对应的操作,输出和输入的张量维度和元素个数保持不变 |
variable | 变量,表示可以微分和手动更新的参数,代表神经网络中可以训练的参数,比如weight和bias |
placeholder | 占位符,如果把一整个神经网络看成一个未知的函数的话,占位符就相当于函数的输出 |
rank | 秩,数组的维度的维度,例如标量的rank=0, rank(vector)=1, rank(matrix)=2, rank([[[1],[1]],[[2],[2]]])=3,…,以此类推 |
一元元素级操作(Uni Element-wise Operaters)
一元元素操作的输入参数一般是(tensor, name=None)
, name
表示操作的名称,tensor
是输入张量, 输出是一个shape和输入完全相同的张量,表示对输入张量tensor
的每一个参数都申请了同一个操作的结果。例如abs([1., -1., 3., -4.]) => [1., 1., 3., 4.]
。
数学函数
tf.abs|log|exp|square|sqrt|reciprocal | (x, name=None) |
---|
Computes the absolute value/log/exp/square/sqare root/reciprocal of a tensor element-wise.
计算张量每个元素的绝对值/自然对数/自然指数/平方/平方根/倒数。
import tensorflow as tf
tf.global_variables_initializer()
sess.run(tf.reciprocal([[3., 4.]]))
## array([[ 0.33333334, 0.25 ]], dtype=float32)
三角函数与反三角函数
函数名 | 参数 | - |
---|---|---|
tf.sin|cos|tan | (x, name=None) | 三角函数 |
tf.asin|acos|atan | (x, name=None) | 反三角函数 |
Computes sin/cos/tan/asin/acos/atan of x element-wise.
按照元素计算正弦/余弦/正切/反正弦/反余弦/反正切值,输出和x的形状相同。
反三角函数指的是三角函数在其单调区间中的反函数。具体可百度之
import math
sess.run(tf.asin([0, 0.5, math.sqrt(0.5), 1.0]))
# array([ 0. , 0.52359879, 0.78539813, 1.57079637], dtype=float32)
取整函数
tf.ceil|tf.floor|tf.round|tf.rint | (x, name=None) |
---|
Returns element-wise smallest integer in not less than x.
Returns element-wise biggest integer in not greater than x.
Returns element-wise integer closest to x.
按照元素向上取整\向下取整\四舍五入。tf.rint和tf.round的效用相同。四舍五入的时候如果小数部分是0.5的话,则取偶数,例如(-0.5->0.), (1.5->2.0).
sess.run(tf.ceil([0, 0.5, math.sqrt(0.5), 1.0]))
# array([ 0., 1., 1., 1.], dtype=float32)
sess.run(tf.floor([0, 0.5, math.sqrt(0.5), 1.0]))
# array([ 0., 0., 0., 1.], dtype=float32)
sess.run(tf.round([0, 0.5, math.sqrt(0.5), 1.5]))
# array([ 0., 0., 1., 2.], dtype=float32)
sess.run(tf.rint([0, 0.5, math.sqrt(0.5), -0.5]))
# array([ 0., 0., 1., 0.], dtype=float32)
最值索引
函数名 | 函数参数 | 函数说明 |
---|---|---|
tf.arg_max|arg_min | (x, dimension, name=None) | 沿着指定的维度返回张量在指定维度最大值(或最小值)索引 |
tf.argmax|argmin | (x, axis=None, name=None, dimension=None) | 同上 |
tf.argmax
和tf.arg_max
执行的是同一个操作,但是推荐使用argmax
,因为arg_max
在将来会被deprecated.
复杂的函数/激活函数
函数名 | 函数参数 | 函数说明 |
---|---|---|
tf.sinh|cosh|tanh | (x, name=None) | 双曲正弦,双曲余弦,双曲正切 |
tf.asinh|acosh|atanh | (x, name=None) | 反双曲正弦,反双曲余弦,反双曲正切 |
tf.sigmoid | (x, name=None) | Sigmoid函数 |
tf.rsqrt | (x, name=None) | 平方根的倒数 |
双曲三角函数
反双曲三角函数,故名思议,是三角函数的反函数
Sigmoid函数
rsqrt函数
y=tanh(x)的取值范围在(-1, +1)之间, y=sigmoid(x)的取值范围在(0, 1)之间,这两个函数都是S型曲线,通常用作神经网络的激活函数。
类型转换函数
函数名 | 函数参数 | 函数说明 |
---|---|---|
tf.cast | (x, dtype, name=None) | 强制类型转换 |
tf.to_bfloat | (x, name='ToBFloat16') | Casts a tensor to type bfloat16 |
tf.to_float | (x, name='ToFloat') | Casts a tensor to type float32 |
tf.to_double | (x, name='ToDouble') | Casts a tensor to type float64 |
tf.to_int32 | (x, name='ToInt32') | Casts a tensor to type int32 |
tf.to_int64 | (x, name='ToInt64') | Casts a tensor to type int64 |
tf.bitcast | (x, dtype, name=None) | 强制类型转化,改变类型但是不改变内存中保存的内容 |
tf.as_string | (x, precision=None, scientific=None, shortest=None, width=None, fill=None, name=None) | 转换成字符串 |
tf.sign | (input, name=None) | 指示函数或曰符号函数,输出张量的类型和输出相同 |
1). cast(x, dtype, name=None)
Casts a tensor to a new type.
强制将张量中元素转换成新的类型
2). bitcast(x, dtype, name=None)
在内存中保存的二进制内容不变得情况下改变类型,相当于改变了二进制串的解码方式,所以该函数会改变张量的形状(shape).
3). as_string(x, precision=None, scientific=None, shortest=None, width=None, fill=None, name=None)
precision: 精度
scitentific:科学计数法
shortest: 是否选择最短的表示法
width: 宽度
fill:补全,如果设置了宽度且字符串小于width时补全字符,默认补全字符是空格
4). sign(input, name=None)
// for each element x in input:(伪代码)
if x > 0 then y = 1
if x == 0 or x is Nan then y = 0
if x < 0 then y = -1
5). to_bfloat16 | to_float | to_double | to_int32 | to_int64
将张量转化为16位、32位、64位精度的浮点小数
或者32位、64位的整形数字。
断言类函数
函数名 | 函数参数 | 断言式 |
---|---|---|
tf.assert_non_negative|assert_negative | 断言非负数,断言是负数 | |
tf.assert_non_positive|assert_positive | 断言非正数,断言是正数 | |
tf.assert_interger | 断言是整数 | |
tf.check_numerics | (x,message,name=None) | 检查x中是否有Nan或者Inf,有的话报错(InvalidArguments ),没有的话返回x |
tf.assert_scalar | (tensor, name=None) | 判断tensor是否是标量 |
二元元素级操作(Bi Element-wise Operaters)
二元元素集操作指的是输入时2个张量,输出为一个张量,输出张量为输入张量中的元素按照位置进行相应计算的操作。输入参数一般为(tensor_x, tensor_y, name=None)
算术操作 (加减乘除等)
函数名 | 函数参数 | 函数说明 |
---|---|---|
tf.add | (x, y, name=None) | 加法, tf.add(x,y) 等价于x+y ,支持广播(broadcasting) |
断言类函数
二元断言操作
函数名 | 函数参数 | 断言式 |
---|---|---|
tf.assert_equal|assert_none_equal | (x, y, data=None, …) | 断言是否相等 |
tf.assert_greater|assert_greater_equal | (x, y, data=None, …) | 断言是否大于/大于等于 |
tf.assert_less|assert_less_equal | (x, y, data=None, …) | 断言是否小于/小于等于 |
反三角函数
函数名 | 函数参数 | 断言式 |
---|---|---|
tf.atan2 | (x, y, name=None) | tf.atan(y/x) |
列表元素级操作(List Element-wise Operaters)
列表元素级操作指的是输入时一组张量(张量的列表), 输出是列表中张量按照位置进行相应操作输出结果。
算术操作(加减乘除等)
函数名 | 函数参数 | 函数说明 |
---|---|---|
tf.accumulate_n | (inputs, shape=None, tensor_dtype=None, name=None) | 加法 |
tf.add_n | (inputs, name=None) | 加法,和accumulate_n执行相同的操作 |
a = [[1, 2, 3], [3, 4, 1]]
b = [[5, 0, -1], [0, 6, 4]]
tf.accumulate_n([a, b, a]) #=> a+b+a => [[7, 4, 5], [6, 14, 6]]
tf.add_n
和tf.accumulate_n
执行的操作,区别在于tf.add_n
会在所有的输入准备就绪后开始求和而tf.accumulate_n
不会。
断言操作
函数名 | 函数参数 | 函数说明 |
---|---|---|
tf.assert_proper_iterable | (values) |
1). assert_proper_iterable(values)
Static assert that values is a “proper” iterable.
判断values是不是一个合适的迭代器,如果values是一个Tensor
,SparseTensor
,np.array
,tf.compat.bytes_or_texts_types
则报错。或者不是迭代器也报错。
这个函数时有用处的,因为张量Tensor
或者数组np.array
本身也是可迭代的 (iterable).
张量生成操作(Tensor Generation Operators)
根据常量生成张量
函数名 | 函数参数 | 函数说明 |
---|---|---|
tf.constant | (value, dtype=None, shape=None, name=’Const’, verify_shape=False) | 从常量生成 |
tf.zeros|ones | 根据形状创建等值张量 | |
tf.zeros_like|ones_like | 根据推断的形状创建等值张量 |
根据概率分布生成张量
函数名 | 函数参数 | 概率分布名 |
---|---|---|
tf.random_uniform | 均匀分布 | |
tf.random_normal | 正态分布 | |
tf.zeros_like|ones_like | 根据推断的形状创建等值张量 |
张量切片操作(Tensor Slice Operations)
函数名 | 函数参数 | 函数说明 |
---|---|---|
tf.boolean_mask | (tensor, mask, name) | Numpy equivalent is tensor[mask] |
断言操作
函数名 | 函数参数 | 函数说明 |
---|---|---|
tf.assert_rank | (x, rank, …) | 判断x的rank是不是和指定的rank相等 |
tf.assert_rank_at_least | (x, rank, …) | 判断x的rank是不是大于等于指定的rank |
tf.zeros_like|ones_like | 根据推断的形状创建等值张量 | |
tf.assert_same_float_dtype | (tensors=None, dtype=None) | 判断是否是指定的float类型 |
tf.assert_type | (tensor, tf_type, message=None, name=None) | 判断tensor是否是指定的类型q |
变量操作 (Variables Operations)
创建操作
赋值操作 (assign )
变量的赋值操作,var
必须是一个Variable
,可以没有初始化。
函数名 | 函数参数 | 函数说明 |
---|---|---|
tf.assign | (var, value,…) | Update var by assigning value to it, var = value |
tf.assign_add | (var, value,…) | Update var by adding value to it, var += value |
tf.assign_sub | (var, value,…) | Update var by substracting value from it, var -= value |
初始化操作
函数名 | 函数参数 | 函数说明 |
---|---|---|
tf.report_uninitialized_variables | (var_list=None, name=’report_uninitialized_variables’) | 返回没有还没有被初始化的变量 |
概率分布
函数名 | 函数参数 | 函数说明 |
---|---|---|
tf.betainc | (a, b, x, name=None) | 计算正则非完全贝塔积分 |
1). tf.betainc(a, b, x)
其中
在计算贝塔分布的时候有用。
统计操作
函数名 | 函数参数 | 函数说明 |
---|---|---|
tf.bincount | (arr, weights=None, minlength=None, maxlength=None, dtype=tf.int32) | 统计张量arr 中每个数出现的次数 |
未完待续