TF2.0筆記2

Tensor的索引

1.經典索引方式

a=tf.ones([1,4,5,12])
a[0][1][2]

2.Numpy風格的索引方式
不同於經典模式,用逗號隔開可讀性更強

a=tf.ones([4,12,23,67])
a[1,2,3].shape

3.Tensor的切片
類似於python的索引方式,含左不含右
主要的運算符就是在索引部分使用 : 運算符
step表示採樣間隔

a=tf.range(10)
a[-1:]
a[0:2]
#start:end
#start:step:end
#::step
#有這三種切片方式
a[::-1]#倒敘採樣

a=tf.random.normal([2,4,28,28,3])
a[0:,:,:,:]
a[0:...]
#以上兩種寫法相同,...表示緯度都取

特別地 在::-1這個符號表示逆轉tensor

可選擇索引

1.tf.gather
按照索引列表進行數據處理
參數:
tensor 表示待採樣的tensor
軸axis表示從某個軸進行抽樣
indices=[ ]表示按照某種索引進行檢索

a=tf.random.normal([4,35,8])
tf.gather(a,axis=0,indices=[2,1,0,3])
#從第一個緯度按照2 1 0 3 的順序進行採樣

2.tf.gather_nd
按照一個索引列表進行採樣

tf.gather_nd(a,[[0,0,0],[1,1,1],[2,2,2]])

3.tf.boolean_mask

a=tf.random.normal([4,28,28,3])
tf.boolean_mask(a,mask=[True,True,False],axis=3)

a=tf.ones([2,3,4])
tf.boolean_mask(a,mask=[[True,False,False],[False,True,True]])
#輸出的shape是(3,4),因爲mask是二維的,所以,這裏的mask代表前兩個緯度的mask,一共是3個True,所以第一個緯度爲3
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章