Deecamp2019年試題A卷詳解和感受

選擇題

選擇題共5道,具體題目和我個人寫的解答如下。

0/1分類問題

deecamp
對於這道題,我們先來理清一些二分類中的基本概念和問題。
下面是一個二分類過程圖詳解:

要看更詳細的介紹,推薦這篇文章:分類指標accuracy,recall,precision等的區別
一般情況下,precision和recall不會同時增大或者減小。理性分析的話:

  1. 當提高Threshold ,TP+FP減少 FN+TN增多
  2. **對TP進行討論,當TP數量不變 Precision變大,Recall不變或者減小。當TP數量變小,precision與TP/FP成正相關,初始時TP/FP = 4。當threshold增大時,TP/FP應該是增大的。所以precision增大,recall減小。

凸函數問題

凸函數
這道題比較簡單,只需要有高中數學的知識即可。
常用的方法是用二階導數判斷。

卷積核問題

卷積核
關於如何理解卷積核及其作用,可以看我這篇文章深入瞭解
一文入門卷積神經網絡

0/1分類問題2

0/1分類
這道題我認爲最大是2,當三個點在一條直線上,且中間的點和其他兩點標籤不同時,無法分開。

代碼閱讀題

在這裏插入圖片描述
這題要看懂兩個循環。當N特別大,這就代表可以用概率的方法求這道題。然後要着重看while那個循環,仔細看其實可以發現這道題就是求while循環一輪結束之後count+1執行的概率之和。比較複雜。共有八輪,我是一輪一輪的循環列出來進行計算的。
最後算出來的結果是:1334325/1679616

填空題

填空題共五道,具體題目以及我寫的解答如下。

填空01

計算機
這道題比較簡單,1/0.640=1.563(保留三位小數)

填空02

在這裏插入圖片描述
感覺回到了高中,這用簡單的高中代數就可解決。用大學知識來說的話,有點線性代數的感覺。答案:1.2

填空03

Bloom Fliter
這道題有難度,看到這道題讓我想起了之前遇到過的一道題,問1000瓶藥裏面只有1瓶是有毒的,毒發時間爲24個小時,問需要多少隻老鼠才能在24小時後試出那瓶有毒。
關於老鼠這道題,1000接近1024,可以用十個bit對每瓶藥進行編號。這十個bit對應十隻老鼠。**然後從低位開始,讓第N只老鼠喝下第N個bit爲 1 的瓶子中的藥。 然後如果其中一些老鼠發病,將其對應的bit置爲1,其餘bit置爲0,得到的即爲有毒那瓶藥的編號。
這道題是同樣的思路。所以至少需要十個手機。

填空04

位運算
寫這道題,我們需要明白內存中的高低位存儲問題。實在不理解的話,可以把這個代碼敲一遍親手驗證一下。
這道題應該是 ;2^29+ 2^27+ 2^26+ 2^24+ 2^20 + 2^ 18 +2^ 17 +2^16 +2^8 = 756482304

填空05

在這裏插入圖片描述
這道題相對於其他的要難一些。需要寫一些代碼來實現。
同時這個題目還有minst.npz附件,如果需要可聯繫[email protected] 或在下方評論私信,看到後會馬上發給你
解答看最後一道問答題。這道題的答案是:

1, 5, 7, 8

問答題

問答題有一道,題目如下。
在這裏插入圖片描述
提供一個這道題的思路(暴力遍歷):

將MNIST數據集中(60000張28x28的圖片)每張圖片像小明一樣分割爲4張14x14的子圖(分別爲左上角,右上角,左下角,右下角),然後與小明的16張14x14的圖片進行匹配,若4個角都匹配上,那麼就選擇出該數字,匹配上就是直接計算L1距離爲0的。

關於這道題如何想出這個思路,我覺得可以從入門機器學習的都會學習一個KNN算法思路發散而來。
代碼如下:

import numpy as np
tmp = np. load('mnist.npz')
x_train = tmp['x_train']
y_train = tmp['y_train']
crop = tmp['crops'].reshape(1, -1, 14, 14)

# numpy內部的循壞,獲取每張圖片的四個角。
# reshape將n*14*14(n爲圖片的張數)維度的圖片增加了一個維度用來 代替循環
x_lu = x_train[:, : 14, : 14].reshape(-1, 1, 14, 14)
x_ld = x_train[:, 14:, : 14].reshape(-1, 1, 14, 14)
x_ru = x_train[:, :14, 14:].reshape(-1, 1, 14, 14)
x_rd = x_train[:, 14:, 14:].reshape(-1, 1, 14, 14)
# 求距離
d_lu = (crop - x_lu).sum(-1).sum(-1)
d_ld = (crop - x_ld).sum(-1).sum(-1)
d_ru = (crop - x_ru).sum(-1).sum(-1)
d_rd = (crop - x_rd).sum(-1).sum(-1)

# 當4個距離均爲0的時候,就是我們想要的結果了
print(y_train[(d_lu.min(1) == 0) & (d_ld.min(1) == 0) & (d_ru.min(1) == 0) & (d_rd.min(1) == 0)])

以上2019年Deecamp2019年試題A卷所有題目了。2019年沒有報名,2020年定要報名參加。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章