Tensorflow常用函数非常详细Word格式.docx
《Tensorflow常用函数非常详细Word格式.docx》由会员分享,可在线阅读,更多相关《Tensorflow常用函数非常详细Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
取模
tf.abs(x,name=None)
求绝对值
tf.neg(x,name=None)
取负(y=-x).
tf.sign(x,name=None)
返回符号y=sign(x)=-1ifx<
0;
0ifx==0;
1ifx>
0.
tf.inv(x,name=None)
取反
tf.square(x,name=None)
计算平方(y=x*x=x^2).
tf.round(x,name=None)
舍入最接近的整数
#‘a’is[0.9,2.5,2.3,-4.4]
tf.round(a)==>
[1.0,3.0,2.0,-4.0]
tf.sqrt(x,name=None)
开根号(y=\sqrt{x}=x^{1/2}).
tf.pow(x,y,name=None)
幂次方
#tensor‘x’is[[2,2],[3,3]]
#tensor‘y’is[[8,16],[2,3]]
tf.pow(x,y)==>
[[256,65536],[9,27]]
tf.exp(x,name=None)
计算e的次方
tf.log(x,name=None)
计算log,一个输入计算e的ln,两输入以第二输入为底
tf.maximum(x,y,name=None)
返回最大值(x>
y?
x:
y)
tf.minimum(x,y,name=None)
返回最小值(x<
tf.cos(x,name=None)
三角函数cosine
tf.sin(x,name=None)
三角函数sine
tf.tan(x,name=None)
三角函数tan
tf.atan(x,name=None)
三角函数ctan
张量操作TensorTransformations
数据类型转换Casting
tf.string_to_number
(string_tensor,out_type=None,name=None)
字符串转为数字
tf.to_double(x,name=’ToDouble’)
转为64位浮点类型–float64
tf.to_float(x,name=’ToFloat’)
转为32位浮点类型–float32
tf.to_int32(x,name=’ToInt32’)
转为32位整型–int32
tf.to_int64(x,name=’ToInt64’)
转为64位整型–int64
tf.cast(x,dtype,name=None)
将x或者x.values转换为dtype
#tensorais[1.8,2.2],dtype=tf.float
tf.cast(a,tf.int32)==>
[1,2]#dtype=tf.int32
形状操作ShapesandShaping
tf.shape(input,name=None)
返回数据的shape
#‘t’is[[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]]
shape(t)==>
[2,2,3]
tf.size(input,name=None)
返回数据的元素数量
#‘t’is[[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]]]
size(t)==>
12
tf.rank(input,name=None)
返回tensor的rank
注意:
此rank不同于矩阵的rank,
tensor的rank表示一个tensor需要的索引数目来唯一表示任何一个元素
也就是通常所说的“order”,“degree”或”ndims”
#’t’is[[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]]
#shapeoftensor‘t’is[2,2,3]
rank(t)==>
3
tf.reshape(tensor,shape,name=None)
改变tensor的形状
#tensor‘t’is[1,2,3,4,5,6,7,8,9]
#tensor‘t’hasshape[9]
reshape(t,[3,3])==>
[[1,2,3],
[4,5,6],
[7,8,9]]
#如果shape有元素[-1],表示在该维度打平至一维
#-1将自动推导得为9:
reshape(t,[2,-1])==>
[[1,1,1,2,2,2,3,3,3],
[4,4,4,5,5,5,6,6,6]]
tf.expand_dims(input,dim,name=None)
插入维度1进入一个tensor中
#该操作要求-1-input.dims()
#‘t’isatensorofshape[2]
shape(expand_dims(t,0))==>
[1,2]
shape(expand_dims(t,1))==>
[2,1]
shape(expand_dims(t,-1))==>
[2,1]<
=dim<
=input.dims()
切片与合并(SlicingandJoining)
tf.slice(input_,begin,size,name=None)
对tensor进行切片操作
其中size[i]=input.dim_size(i)-begin[i]
该操作要求0<
=begin[i]<
=begin[i]+size[i]<
=Diforiin[0,n]
#’input’is
#[[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]],[[5,5,5],[6,6,6]]]
tf.slice(input,[1,0,0],[1,1,3])==>
[[[3,3,3]]]
tf.slice(input,[1,0,0],[1,2,3])==>
[[[3,3,3],
[4,4,4]]]
tf.slice(input,[1,0,0],[2,1,3])==>
[[[3,3,3]],
[[5,5,5]]]
tf.split(split_dim,num_split,value,name=’split’)
沿着某一维度将tensor分离为num_splittensors
#‘value’isatensorwithshape[5,30]
#Split‘value’into3tensorsalongdimension1
split0,split1,split2=tf.split(1,3,value)
tf.shape(split0)==>
[5,10]
tf.concat(concat_dim,values,name=’concat’)
沿着某一维度连结tensor
t1=[[1,2,3],[4,5,6]]
t2=[[7,8,9],[10,11,12]]
tf.concat(0,[t1,t2])==>
[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
tf.concat(1,[t1,t2])==>
[[1,2,3,7,8,9],[4,5,6,10,11,12]]
如果想沿着tensor一新轴连结打包,那么可以:
tf.concat(axis,[tf.expand_dims(t,axis)fortintensors])
等同于tf.pack(tensors,axis=axis)
tf.pack(values,axis=0,name=’pack’)
将一系列rank-R的tensor打包为一个rank-(R+1)的tensor
#‘x’is[1,4],‘y’is[2,5],‘z’is[3,6]
pack([x,y,z])=>
[[1,4],[2,5],[3,6]]
#沿着第一维pack
pack([x,y,z],axis=1)=>
[[1,2,3],[4,5,6]]
等价于tf.pack([x,y,z])=np.asarray([x,y,z])
tf.reverse(tensor,dims,name=None)
沿着某维度进行序列反转
其中dim为列表,元素为bool型,size等于rank(tensor)
#tensor‘t’is
[[[[0,1,2,3],
#[4,5,6,7],
#[8,9,10,11]],
#[[12,13,14,15],
#[16,17,18,19],
#[20,21,22,23]]]]
#tensor‘t’shapeis[1,2,3,4]
#‘dims’is[False,False,False,True]
reverse(t,dims)==>
[[[[3,2,1,0],
[7,6,5,4],
[11,10,9,8]],
[[15,14,13,12],
[19,18,17,16],
[23,22,21,20]]]]
tf.transpose(a,perm=None,name=’transpose’)
调换tensor的维度顺序
按照列表perm的维度排列调换tensor顺序,
如为定义,则perm为(n-1…0)
#‘x’is[[123],[456]]
tf.transpose(x)==>
[[14],[25],[36]]
#Equivalently
tf.transpose(x,perm=[1,0])==>
[[14],[25],[36]]
tf.gather(params,indices,validate_indices=None,name=None)
合并索引indices所指示params中的切片
tf.one_hot
(indices,depth,on_value=None,off_value=None,
axis=None,dtype=None,name=None)
indices=[0,2,-1,1]
depth=3
on_value=5.0
off_value=0.0
axis=-1
#Thenoutputis[4x3]:
output=
[5.00.00.0]//one_hot(0)
[0.00.05.0]//one_hot
(2)
[0.00.00.0]//one_hot(-1)
[0.05.00.0]//one_hot
(1)
矩阵相关运算
tf.diag(diagonal,name=None)
返回一个给定对角值的对角tensor
#‘diagonal’is[1,2,3,4]
tf.diag(diagonal)==>
[[1,0,0,0]
[0,2,0,0]
[0,0,3,0]
[0,0,0,4]]
tf.diag_part(input,name=None)
功能与上面相反
tf.trace(x,name=None)
求一个2维tensor足迹,即对角值diagonal之和
tf.matmul(a,b,transpose_a=False,
transpose_b=False,a_is_sparse=False,
b_is_sparse=False,name=None)
矩阵相乘
tf.matrix_determinant(input,name=None)
返回方阵的行列式
tf.matrix_inverse(input,adjoint=None,name=None)
求方阵的逆矩阵,adjoint为True时,计算输入共轭矩阵的逆矩阵
tf.cholesky(input,name=None)
对输入方阵cholesky分解,
即把一个对称正定的矩阵表示成一个下三角矩阵L和其转置的乘积的分解A=LL^T
tf.matrix_solve(matrix,rhs,adjoint=None,name=None)
求解tf.matrix_solve(matrix,rhs,adjoint=None,name=None)
matrix为方阵shape为[M,M],rhs的shape为[M,K],output为[M,K]
复数操作
plex(real,imag,name=None)
将两实数转换为复数形式
#tensor‘real’is[2.25,3.25]
#tensorimagis[4.75,5.75]
plex(real,imag)==>
[[2.25+4.75j],[3.25+5.75j]]
plex_abs(x,name=None)
计算复数的绝对值,即长度。
#tensor‘x’is[[-2.25+4.75j],[-3.25+5.75j]]
plex_abs(x)==>
[5.25594902,6.60492229]
tf.conj(input,name=None)
计算共轭复数
tf.imag(input,name=None)
tf.real(input,name=None)
提取复数的虚部和实部
tf.fft(input,name=None)
计算一维的离散傅里叶变换,输入数据类型为complex64
归约计算(Reduction)
tf.reduce_sum(input_tensor,reduction_indices=None,
keep_dims=False,name=None)
计算输入tensor元素的和,或者安照reduction_indices指定的轴进行求和
#‘x’is[[1,1,1]
#[1,1,1]]
tf.reduce_sum(x)==>
6
tf.reduce_sum(x,0)==>
[2,2,2]
tf.reduce_sum(x,1)==>
[3,3]
tf.reduce_sum(x,1,keep_dims=True)==>
[[3],[3]]
tf.reduce_sum(x,[0,1])==>
tf.reduce_prod(input_tensor,
reduction_indices=None,
计算输入tensor元素的乘积,或者安照reduction_indices指定的轴进行求乘积
tf.reduce_min(input_tensor,
求tensor中最小值
tf.reduce_max(input_tensor,
求tensor中最大值
tf.reduce_mean(input_tensor,
求tensor中平均值
tf.reduce_all(input_tensor,
对tensor中各个元素求逻辑’与’
#‘x’is
#[[True,True]
#[False,False]]
tf.reduce_all(x)==>
False
tf.reduce_all(x,0)==>
[False,False]
tf.reduce_all(x,1)==>
[True,False]
tf.reduce_any(input_tensor,
对tensor中各个元素求逻辑’或’
tf.accumulate_n(inputs,shape=None,
tensor_dtype=None,name=None)
计算一系列tensor的和
#tensor‘a’is[[1,2],[3,4]]
#tensorbis[[5,0],[0,6]]
tf.accumulate_n([a,b,a])==>
[[7,4],[6,14]]
tf.cumsum(x,axis=0,exclusive=False,
reverse=False,name=None)
求累积和
tf.cumsum([a,b,c])==>
[a,a+b,a+b+c]
tf.cumsum([a,b,c],exclusive=True)==>
[0,a,a+b]
tf.cumsum([a,b,c],reverse=True)==>
[a+b+c,b+c,c]
tf.cumsum([a,b,c],exclusive=True,reverse=True)==>
[b+c,c,0]
分割(Segmentation)
tf.segment_sum(data,segment_ids,name=None)
根据segment_ids的分段计算各个片段的和
其中segment_ids为一个size与data第一维相同的tensor
其中id为int型数据,最大id不大于size
c=tf.constant([[1,2,3,4],[-1,-2,-3,-4],[5,6,7,8]])
tf.segment_sum(c,tf.constant([0,0,1]))
==>
[[0000]
[5678]]
上面例子分为[0,1]两id,对相同id的data相应数据进行求和,
并放入结果的相应id中,
且segment_ids只升不降
tf.segment_prod(data,segment_ids,name=None)
根据segment_ids的分段计算各个片段的积
tf.segment_min(data,segment_ids,name=None)
根据segment_ids的分段计算各个片段的最小值
tf.segment_max(data,segment_ids,name=None)
根据segment_ids的分段计算各个片段的最大值
tf.segment_mean(data,segment_ids,name=None)
根据segment_ids的分段计算各个片段的平均值
tf.unsorted_segment_sum(data,segment_ids,
num_segments,name=None)
与tf.segment_sum函数类似,
不同在于segment_ids中id顺序可以是无序的
tf.sparse_segment_sum(data,indices,
segment_ids,name=None)
输入进行稀疏分割求和
#Selecttworows,onesegment.
tf.sparse_