兩個奇怪的TF索引操作和比較類函式
阿新 • • 發佈:2019-01-06
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
還是看一個例子吧:
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 |