安科第一面+中興軟創第一面 總結
安科第一面
面試的是影象處理方面的實習生,安科主要做的是醫學影象後期處理
面試我的應該是個技術部門的主管,隨便聊了聊關於神經網路方面的知識。
印象最深的是CNN,卷積神經網路中的卷積是怎麼樣卷的。當時一臉矇蔽,印象中記得是矩陣發生運算,具體怎麼運算,上課的時候有人講過,自己當時沒認真聽講忘記了。現在回過頭來補下關於卷積的操作。
1、卷積操作
卷積就是矩陣直接的點積(對應元素乘積的和),詳細吳恩達CNN講解見部落格
通過以下的水平過濾器和垂直過濾器,可以實現影象水平和垂直邊緣檢測。
以下列出了一些常用的過濾器,對於不同的過濾器也有著不同的爭論,在卷積神經網路中把這些過濾器當成我們要學習的引數,卷積神經網路訓練的目標就是去理解過濾器的引數。
padding
- 做完卷積運算,影象不斷縮小
- 邊緣元素只能使用一次,在影象邊緣檢測中會導致邊緣特徵資訊丟失
於是引入了padding,邊緣填充。tensorflow中提供SAME或者是VALID兩種選擇,SAME表示全零填充(輸出影象和輸入影象一樣大),VALID表示不新增。
關於padding部分:簡書上寫得很詳細https://www.jianshu.com/p/05c4f1621c7e
根據tensorflow中的conv2d函式,我們先定義幾個基本符號
1、輸入矩陣 W×W,這裡只考慮輸入寬高相等的情況,如果不相等,推導方法一樣,不多解釋。
2、filter矩陣 F×F,卷積核
3、stride值 S,步長
4、輸出寬高為 new_height、new_width
當然還有其他的一些具體的引數,這裡就不再說明了。
我們知道,padding的方式在tensorflow裡分兩種,一種是VALID,一種是SAME,下面分別介紹這兩種方式的實際操作方法。
1、如果padding = ‘VALID’
new_height = new_width = (W – F + 1) / S (結果向上取整)
也就是說,conv2d的VALID方式不會在原有輸入的基礎上新增新的畫素(假定我們的輸入是圖片資料,因為只有圖片才有畫素),輸出矩陣的大小直接按照公式計算即可。
2、如果padding = ‘SAME’
new_height = new_width = W / S (結果向上取整)
在高度上需要pad的畫素數為
pad_needed_height = (new_height – 1) × S + F - W
根據上式,輸入矩陣上方新增的畫素數為
pad_top = pad_needed_height / 2 (結果取整)
下方新增的畫素數為
pad_down = pad_needed_height - pad_top
以此類推,在寬度上需要pad的畫素數和左右分別新增的畫素數為
pad_needed_width = (new_width – 1) × S + F - W
pad_left = pad_needed_width / 2 (結果取整)
pad_right = pad_needed_width – pad_left
2、全連線層為什麼可以看作是特例卷積層?
https://blog.csdn.net/zxyhhjs2017/article/details/78605283
1*1卷積可以代替全連線層
中興軟創面試問題
- 在決策樹中,決策樹的思想?當資料相差比較大的時候,採用什麼方法?(如果資料的分佈比較大,那麼資訊熵和資訊增益有什麼變化之類的?)前剪枝和後剪枝怎麼處理,資訊熵,資訊增益。型別有很多CART、ID3、C4.5等。資訊熵的公式是什麼?
- 介紹一下整合學習。什麼是整合學習?
- 過擬合和欠擬合。什麼是過擬合?
- 迪傑斯特拉演算法?關於圖論的知識,迪傑斯特拉演算法是在有向圖中,計算一個頂點到其餘各頂點的最短路徑。解決的是有向圖中最短路徑的問題。
- 介紹一下什麼是神經網路
- 介紹一下卷積神經網路
- 學過線性代數嗎?有沒有用過矩陣相關的包?
暫時先寫到這,由於我是第一個開始面試的,面試的人還沒進入面試狀態,問我的問題都比較簡單。面試人挺注重自己動手實踐這塊的,問了我有沒有自己動手處理資料集,並且解決出問題,效果怎麼樣。以後在動手實踐方面還是要多多加強!