timmycc

@timmycc

Joined on Sep 29, 2019

  • 在講 AP 之前先來說說 Precision 跟 Recall,就公式上來說 precision = TP/TP+FP,recall = TP/TP+FN,白話來說 Precision 就是所有 positive(預測)的結果中 TP 的比例,recall 就是預測中 positive 的目標被正確判斷為 positive 的比例,舉例來說,今天如果一張圖中有五個人,有三個人被正確的框出來了,但有另外一個不知道標去那裡的框,因此所有 positive 的結果(TP+FP=4)中有三個是對的,所以 precision=0.75,那實際為 positive 的目標(5)有三個正確的標出來,所以recall=0.6,也可以說 precision 看你標出來的品質,recall 指在乎目標有沒有被標到,confidence threshold 過高你可能標的很準達到超高的precision,但你忽略的地方相對來說也會增加,太低的話 recall 可以很高,不過可能標了太多不存在的東西。 幹嘛不直接看 Precision? 如同 detection 的結果,每個預測其實都包含了一個 confidence,如果兩個 model 預測出來一樣都是 0.8 的 precision,但一個 confidence 都落在快要被排除掉的範圍,一個 confidence 都是很完美的1,此時單純的 precision 就無法去判別出好壞。 所以 AP 怎麼計算? 所謂 AP 就是計算模型預測結果的 Precision-Recall-curve 底下的面積,顧名思義就是以 Precision 跟 Recall 當作橫軸與縱軸畫出來的圖,延續前面的例子,我們假設預測出來的框框其實有五個,confidence 分別為0.9、0.8、0.7、0.6、0.4,其中後兩個分別為錯誤與正確的預測,且 confidence threshold 為0.5,因此結果的四個框框都被選出來,但如果不論如何只選最高的那個top-1,對這例子來說 precision 就是1,如果再放寬一點,我前兩名都給過,那在這例子中依然是個很準的情況,再繼續下去放寬到第四個時,precision 就開始下降了,但過程中 recall 也會跟著增加,AP 就是來計算這曲線底下的面積,precision-recall curve,把選取的情況一一列出可以得到 Confidence threshold 0.9
     Like  Bookmark
  • contributed by < timmycc > 原題大意 題目 介紹 FB 針對頻繁的短字串處理做 SSO(Small String Optimization),以folly::fbstring 取代 std::string,對各別大小的字串做出最適當的處理,而本測驗嘗試以 C 重現 folly::fbstring,同樣以 stack 來儲存短字串,但不同的是儲存的字串大小縮減為15 bytes,學習在特定的目的之下做出相對應的效能提升。 AAA 和 BBB 為整數,CCC 是 operator,。Count Leading Zeros (clz) 或名 Number of Leading Zeros (nlz) 為計算 2 進位數從 MSB 往右數遇到的第一個 1 之前所有 0 的數量,因此,clz(0001010100011011) 會得到 3。GCC 內建了許多功能強大的函式,其中一項就是 __builtin_clz,注意,當參數為 0 時,結果未定義:補完正確的程式碼,使得其執行結果符合預期。
     Like  Bookmark
  • contributed by <timmycc> list *sort(list *start) { if (!start || !start->next) return start; list *left = start; list *right = left->next; LL0; left = sort(left);
     Like  Bookmark
  • contributed by < timmycc > Fork and Clone 點選文內連結到 lab0-c 的 Repository 後,fork 到自己的 github,再 clone 到電腦上來進行修改。 Implement the function 文中提到了 q_insert_tail 和 q_size 需要將原本 O(n) 時間複雜度的實作改寫為 O(1) 時間複雜度 原本這兩種操作勢必都要從頭開始 traverse,唯一達到常數時間的方法是在 typedef 加入 tail 跟 size 兩種屬性。(仔細看 code 中的 comment 其實有提示)
     Like  Bookmark