两个奇怪的TF索引操作和比较类函数

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

猜你喜欢

转载自blog.csdn.net/qq_31150463/article/details/84553798