在分類的中經常可以看到top-1,top-5等topn準確率(或者時錯誤率)。
那這個topn是什麼意思呢?首先top-1準確率最好理解,就是我們用argmax從網路輸出取到的**index與真實index的準確率。
top-5準確率就是指從網路輸出取到的**概率最大5個index與真實的index進行比對,5個之中任意乙個比對成功就算**正確了。同理top-3就是指概率最大3個index.
可以發現top-1的準確率很容易計算直接通過argmax就可以了,演示**如下:
lists = np.array([0.4,0.2,0.3,0.1])
index = np.argmax(lists)
score = lists[index]
大於1的時候就沒法使用argmax了,其實在numpy中有argsort能幫到我們。
np.argmax的功能就是對list從小到大進行排序,最後輸出排序過後每個元素本來的下標。下面用**來解釋一下:
lists = np.array([0.4,0.2,0.3,0.1])
indexs = np.argsort(lists)
print(indexs)
# [3 1 2 0]
結果怎麼理解呢?其實第一步先對[0.4,0.2,0.3,0.1] -->[0.1,0.2,0.3,0.4]排序,再對排序好的[0.1,0.2,0.3,0.4]找出每個元素原始下標,例如0.1的原始下標為3,0.2的下標為2 .. 最終得到[3 1 2 0]
這個怎麼應用到topn計算中呢?其實就很容易了,可以利用argsort取得排好序元素的下標,再通過下標找到對應的概率值即可:以top-3指標舉例
import numpy as np輸出結果是[0, 2, 1] [0.4, 0.3, 0.2],表示0的種類概率0.4,正確地完成了我們設想的功能。lists = np.array([0.4,0.2,0.3,0.1])
def get_top_n(lists,n):
sort_index = np.argsort(lists)
n_index = sort_index[-n:]#因為是按照概率從大到小取n個
indexs =
scores =
for index in reversed(n_index):#從大到小取,所以通過reversed()倒置一下
return(indexs,socres)
indexs,scores = get_top_n(lists,3)
print(indexs,scores)
#[0, 2, 1] [0.4, 0.3, 0.2]
IOPS計算方法
通常當資料庫管理員提出需要更多儲存空間的時候,他們還會指定必須要達到多少iops。現在有這樣乙個需求,20tb儲存空間同時滿足4500 iops raid 5,我應該如何計算?raid 5或者raid 1 0的時候分別需要多少塊硬碟?首先需要知道i o中讀操作 read 與寫操作 write 所佔的...
RMS計算方法
先提乙個問題 使用訊號發生器輸出同乙個脈衝方波訊號,在示波器上採用直流耦合方式和交流耦合方式,在示波器上得出的rms值是不一樣的,存在很大的差異,為何?原因是直流耦合在取樣時以地作為平面採用波形,並帶有一定的直流成分,而交流則已波形的中心水平線作為平面取波形的絕對值採集計算,數值是不一樣的,兩者之間...
MTLD計算方法
計算方法 傳入乙個詞的list,其實mtld就是計算詞串的長度,有個要求,詞串的長度小於10他的數值就會失效,還有github上邊有另外一種說法就是總詞數不能小於50,我們用的後面那種。傳進來後,挨個詞進行ttr計算,就是比如說第乙個詞,詞數是1,唯一詞數也是1,那麼我們ttr就是1,然後判斷1 0...