最近在用到數據篩選,觀看代碼中有tf.where()的用法,不是很常用,也不是很好理解。在這里記錄一下
1 tf.where( 2 condition, 3 x=None, 4 y=None, 5 name=None 6 )
Return the elements, either from x or y, depending on the condition.
理解:where嘛,就是要根據條件找到你要的東西。
condition:條件,是一個boolean
x:數據
y:同x維度的數據。
返回,返回符合條件的數據。當條件為真,取x對應的數據;當條件為假,取y對應的數據
舉例子。
1 def test_where(): 2 # 定義一個tensor,表示condition,內部數據隨機產生 3 condition = tf.convert_to_tensor(np.random.random([5]), dtype=tf.float32) 4 5 # 定義兩個tensor,表示原數據 6 a = tf.ones(shape=[5, 3], name='a') 7 8 b = tf.zeros(shape=[5, 3], name='b') 9 10 # 選擇大於0.5的數值的坐標,並根據condition信息在a和b中選取數據 11 result = tf.where(condition > 0.5, a, b) 12 13 with tf.Session() as sess: 14 print("condition:\n", sess.run([condition, result]))
結果:

