TensorFlow人工智能學習張量及高階操作示例詳解

一、張量裁剪

1.tf.maximum/minimum/clip_by_value()

該方法按數值裁剪,傳入tensor和閾值,maximum是把數據中小於閾值的變成閾值。minimum是把數據中大於閾值的變成閾值。clip_by_value需要傳入兩個閾值,會把數據裁剪到閾值中間。

2.tf.clip_by_norm()

按范數裁剪,傳入tensor和新的范數。通過裁剪范數,可以進行等比例放縮,使得梯度方向不變,但數值變小。通過這個方法可以對梯度進行裁剪,一次性對所有的參數的范數進行裁剪,並且保留方向。防止梯度爆炸,梯度彌散。

二、張量排序

1.tf.sort/argsort()

這兩個方法分別返回排序後的值,排序後的索引。有索引之後,可以通過gather方法對數據排序。

對於多維tensor,不指定軸的時候,默認是對最後一個軸操作。

2.tf.math.topk()

返回前k大的那些數據,以及索引。比如下面的例子,傳入a,2的意思是前兩個大的值。因此會對每一行,尋找前兩大的數,以及對應的索引,存到返回值中。

可以通過這個規則,求解topk的準確率。比如下面的例子,對於兩條數據,預測概率是prob,根據預測概率,得到這兩條數據最大值索引是2,1,而實際的值target是2,0。

①通過tf.math.top_k方法,對預測的概率進行排序,讓它返回前三大的值。並得到索引。

②將索引進行轉置之後,可以方便地閱讀:第一列就是第一條數據的預測值概率索引排序,第二列就是第二條數據的預測值概率索引排序。

③那麼,對於兩條數據top1的準確率,就是概率最大的索引,也就是第一行的兩個數據,2,1,而實際值是2,0,那麼top1準確率就是50%

④top2的準確率,意思就是,隻要前兩名的概率預測有對的,那就算預測對瞭。那麼第一行,第一條預測對瞭,第二條預測錯瞭。而第二行,第一條預測錯瞭,第二條預測對瞭。

⑤那麼,根據“隻要前兩個概率有一個對,那就算對”,top2的準確率就是100%

三、TensorFlow高階操作

1.tf.where()

如果傳入佈爾型數據,會根據數據返回值為True的數值的索引。

如果傳入條件數據,比如where(condition, A, B),condition是一個佈爾tensor,會從A裡面選擇condition為true的位置所對應的數據,從B裡面選擇conditon為false的位置所對應的數據。

2.tf.scatter_nd()

該方法中,傳入索引,數據,底板。

底板通常是全0的tensor,索引是和數據一一對應的,並且索引的長度不超過底板。

傳入的每一個數據都對應一個索引,然後把數據更新到底板上面索引對應的位置。

如果底板已經有數據瞭,就需要全部清零,再更新。

在二維上面舉例如下:

3.tf.meshgrid()

和numpy裡面的meshgrid用法一樣,分別生成的是網格中x和y的數據。例子如下:

然後使用stack進行一個堆疊,就可以得到所有25個點的坐標。

以上就是TensorFlow人工智能學習張量及高階操作示例詳解的詳細內容,更多關於TensorFlow張量高階操作的資料請關註WalkonNet其它相關文章!

推薦閱讀: