tf.invert_permutation(x)
这是个奇怪的函数,之所以说奇怪,是因为学到目前为止,我还不清楚它有什么用,这个函数的功能是这么描述的:将x中元素的值当作索引,返回新的张量,用公式表达如下:
设张量X=[x1,x2,x3,…xn],那么Y=tf.invert_permutation(X)=[yxi=i]
还是举例说明吧:
设X=[3,2,0,1,4]
x0=3,x1=2,x2=0,x3=1,x4=4
yx0=y3=0
yx1=y2=1
yx2=y0=2
yx3=y1=3
yx4=y4=4
于是Y=[2,3,1,0,4]
tf.where(condition,x,y)
condition是一个元素为True或者False的张量,shape必须和x,y一致,当只有condition一个参数的时候,函数返回True的索引,比如tf.where([True,False,False,True])=[[0],[3]]。注意函数返回的是列向量。
当函数有x,y参数的时候,函数进行如下操作:产生一个和X,Y shape相同的张量,在这个张量(比如说是一个二维张量Z)中,zij的值由conditionij决定,如果conditionij==True,那么zij=xij,否则zij=yij
还是看一个例子吧:
x | 2,2,3 | 4,5,6 |
---|---|---|
condition | True,False,False | False,True,True |
y | 1,0,3 | 1,5,1 |
z=where(condition,x,y) | 2,0,3 | 1,5,6 |