国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片

0%

在很多機器學習系統中,計算圖是一個非常重要的概念,計算圖是一個有向無環圖,它描述的計算的依賴關系。有了 計算圖之后,我們就可以根據 static graph 對計算做各種優化。

在 MXNet 中,參數管理是非常重要的一個功能,MXNet 通過 Parameter 提供了統一的參數定義使用方式。

過去兩年用 mxnet 定制了很多 op, 深入學習了 mxnet 源碼。本系列以 mxnet v0.7.0 代碼為主,深入分析 mxnet 的源碼,做一個階段性的總結,同時也希望能在 mxnet 上進行深度開發的同學提供幫助。

MShadow 是一個輕量級的 Tensor Template Library。mshadow 同時支持 C++ 和 CUDA,一套代碼既可以跑在 CPU 上,也可以跑在 GPU 上。并且是 lazy computation 的。如果對于 cuda 上面的運行沒有極致要求的話,mshadow 對于 Tensor 的計算是個很好的選擇,性能也不會很差。如果對于性能有極致的需求,那就要手動去 tune 了,或者也可以嘗試一下 tvm。
本文嘗試給 mshadow 添加一個新的 extension, mshadow::expr::resize。完整實現在 Github

在深度學習中,隨著模型和數據的不斷增長,在大部分情況下需要使用多卡或者多機進行訓練。在多卡或者多機訓練中。一般有數據并行和模型并行兩種并行方案,數據并行的參數更新中有同步更新和異步更新兩種方法,本文討論的是數據并行中的同步參數更新的一種方法。

MXNet 中對 classification 任務提供了把訓練圖像數據轉換成一個大的二進制文件的方法,但是,對于其它任務例如語義分割等,并沒有提供類似的功能。這里,介紹一下如何使用 LMDB 的 Python 接口把語義分割訓練數據的圖像和標簽轉換成 LMDB 的文件。首先,這里簡要介紹一下問什么要把圖像文件轉換成大的二進制文件。

Gluon IO 使用方法中介紹了如何使用 MXNet 的 IO 接口。Gluon 是 MXNet 提供的一個新的封裝接口,非常容易在靜態圖和動態圖之間轉換,動態圖在調試的時候非常有用,靜態圖在訓練的時候速度更占優勢。目前比較推薦使用 Gluon 接口。而且,Gluon 封裝了一個使用更加方便的 IO 接口,這里記錄下 Gluon 的 IO 使用方法。

NAS 提供了一種自動化搜索網絡結構的方法。其大體思想是固定網絡的訓練過程,然后尋找通過該訓練過程可以達到最好效果的網絡結構。從一定程度上看這種方法和我們通常選定一種網絡結構然后使用不同的優化參數和優化方法找到最好的模型參數的過程恰好相反。

在 ConvNet 中,大部分的計算耗費在計算卷積的過程中,尤其是在端上設備中,對于性能的要求更為苛刻。程序的性能優化是一個復雜而龐大的話題。高性能計算就像系統設計一樣,雖然有一些指導原則,但是,對于不同的場景需要有不同的設計方案,因此,對于同一個優化問題,不同的人可能會給出完全不同的優化方案。本文不是探討硬件和代碼級的優化,僅針對計算卷積的一個特定方法 — Winograd 方法做一個簡單的記述。

Faster RCNN 的工作具有里程碑的意義,把 Region Proposal 和具體的檢測過程全部通過 CNN 完成,實現了整個目標檢測過程的 end to end 的訓練。后續的大部分工作,例如 SSD, RFCN,FPN,Mask RCNN 等都延續了 RPN 的思路,因此,充分理解 Faster RCNN 對后續的工作有很多幫助。

Gluon 是 MXNet 實現的一套同時可以支持動態圖和靜態圖的計算接口。和原有的 Symbol 接口相比,Gluon 的封裝層次更高,在某種程度上使用更靈活。本文記錄在學習 Gluon 的過程中實現 DeepLab V3 的過程。同時,數據的處理和輸入也是使用的 Gluon 中提供的 Dataset 接口。

在計算優化中有一個重要的方法是把算法和代碼實現解耦,這樣做的好處是,同一個算法,可以方便得移植到不同的硬件平臺。同時,以為算法實現了解耦,因此,在代碼優化中,可以非常方便地對硬件有關平臺的代碼進行靈活的 tune, 從而找到最佳性能方案。

Operators 是構建神經網絡的必要元素, operators 定義了輸入到輸出的映射關系. MXNet 有一系列非常豐富的 operators, 有一些是簡單的 operators, 例如 element-wise sum, 也有一些復雜的 operators 例如 convolution. 通常情況下, 使用這些 operators 可以構建大部分常見的 nn. 在 MXNet 實現的很多 operators 通常在 numpy 中是有等價形式的, 例如 repreat, tile 等. 那么, 為什么在MXNet中不直接使用 numpy 呢? 其中最重要的原因就是MXNet需要同時支持cpu和gpu運算, 而numpy目前并不支持gpu計算. 另外, 為了最大化 memory 和 runtime efficiency, MXNet 中的大量的 components 做了深度優化, 例如 tensor data structure (NDArray), execution engine, computational graph 等等. MXNet 中實現的 operators 會綜合考慮前面的各種優化從而做到性能的極致優化.

之前已經有兩篇分析了 MXNet 的 Bind 和 SimpleBind 的源碼, 這篇, 主要是記錄一下 CPP package 中是如何調用 Bind 和 SimpleBind 的. 搞清楚這兩部分有兩個好處, 一是為自己寫代碼調用 Bind 提供參考, 二是了解 MXNet 中 Symbol/Graph 和具體的 NDArray 是如何協同的.

ResNeXt 和 ResNet, GoogleNet 都是首先構建 building block, 然后把多個 building block 串聯起來形成最終的網絡結果。這種方法的好處是減少了 hyper-parameters, 而且,這種方法得到的模型適應性更好,也就是說不會再 A 數據集上效果很好,換成 B 數據集效果就很差。ResNeXt 沿用了 ResNet 中 shortcut 的思想,但是,ResNeXt 在 building block 上做了很大的改進。針對每一個 building block 在寬度上進行了拓展,輸出的 feature map 的 channel 的數量減少,進而,減少了參數的數量。

ShuffleNet 主要是對 feature map 的 channel 做 shuffle 操作。另外,還借鑒了近期用的比較多的 depthwise separable convolution 的思想。另外在 alexnet 中因為當時顯存不足提出的 group convolution, 隨后隨著顯存的不斷增大逐步被棄用的 group convolution 在 ShuffleNet 中配合 shuffle layer 操作大量使用。

MobileNet 是 Google 提出的一種 efficient 的模型,總結來講,mobilenet 中沒有全新的 layer, 因此,完全可以在現有的框架例如 caffe, mxnet, TensorFlow 中非常方便地實現。

Xception 的主要特點是 Depthwise Separable Convolutions, Xception 在多個數據集上并沒有比 Inception V3 好很多的結果,但是,Xception 中 Depthwise Separable Convolutions 的做法在最近的一些高效模型中被廣泛使用。

FCN 是一種有效的對圖像語義分割的方法,方法十分簡單,分割效果非常好。本文記錄使用 FCN 做語義分割的過程。本文記錄的方法和 FCN 原始論文并不完全相同,但是,基本思想是一致的。

Bind 是 MXNet 中最重要的一個函數,它連接起來了各個模塊。Bind 啟動了整個 MXNet 的工作。因此,在分析 MXNet 的各個模塊之前最好能先對 Bind 有個初步的了解,理解 MXNet 的各個模塊是怎么串起來的。SimpleBind 主要的工作是構建和整理參數,最后還是要把參數傳遞給 Bind.

上次說到了 MXNet 的基本過程,其中最重要的一步是構建 Executor, 而構建 Executor 中最重要的就是通過 Bind 方法把 MXNet 的各個部件如 Symbol, context, NDArray 參數等數據捏合到一起,因此,要深入理解 MXNet 的計算過程,需要對該 Bind 方法進行深入研究。由于 Bind 方法中的參數,尤其是 NDArray 的參數要求是和 computation graph 的 topo 序相同,因此,直接分析 Bind 仍然不能理解這一點,所以,這里首先分析 SimpleBind, 了解 MXNet 的 Bind 需要怎樣的參數輸入,而 SimpleBind 又是怎樣實現這一點的。

對于用戶來說,MXNet 工作的基本流程是,首先通過 symbol 定義一個 computation graph, 然后,把數據綁定到 symbol 上,最后,執行 forward 和 backward 完成模型的優化。下面通過一個最簡單的例子來說明這個過程。

MXNet 和 tensorflow 都提供了完善的 Python 借口,Python 相對于 C++ 來多極其方便,因此 Python 比較多。深入分析了解 MXNet 的源碼能夠帶來諸多好處,首先 MXNet 是遵循 C++11 標準的,使用了大量的 C++11 的新特性,分析 MXNet 源碼可以幫助學習 C++11 的新特性。其次,MXNet 遵循了模塊化的系統設計思想,整個系統設計非常完善,并且和 tensorflow 相比,MXNet 的代碼量要少很多,分析 MXNet 的源碼可以幫助學習設計簡潔高效的系統。

參數是機器學習中很重要的一個部分,參數是用戶和機器學習框架進行交互的一種方式。這篇文章將會介紹 DMLC 的參數模塊,設計該該輕量級的 C++ 模塊的目的就是支持通用的機器學習庫,其具備以下幾個優點:

翻譯自 MXNet 官方文檔
深度學習中,我們希望框架運行速度越快越好,支持的數據集/模型越大越好。一種顯而易見的方法就是堆機器,堆顯卡。這種方案帶來的問題是:如何在多臺機器,多塊顯卡上進行并行計算,以及如何在多線程的情況下正確而高效的實現計算的同步。

翻譯自 MXNet 官方文檔
在深度學習領域有很多深度學習庫,每個庫都有其獨特之處。從系統優化和用戶體驗角度講,每個庫有什么優點和缺點呢?這篇文章對編程模型做了比較,討論了他們基本的優缺點以及我們可以從中學習到什么。

翻譯自 MXNet 官方文檔.
在深度學習中,我們總是希望能夠訓練更大,更深的網絡模型。雖然硬件的發展速度很快,但是,為了構建更復雜的深層網絡模型,總是希望有更多的顯存/內存可用。對于同樣的一個網絡,如果能夠使用更少的內存占用,也就意味著在訓練的時候可以使用更大的 batch size, 通常也意味著更高的 GPU 使用率。

合理地使用網絡共享可以極大地提高效率。比如,通過 samba 服務在本地調試代碼,然后放到集群上訓練。在家的時候,在 PC 上搭建一套 ftp 服務之后,可以在 pad 上直接用 AVPlayer 看 PC 上的視頻或者用 PDF Expert 看論文。不占用本地空間,而且,對 PDF 的標注直接保存在 PC 上。本文記錄使用 Resilio Sync 進行文件共享的方法。

學情跟蹤是一個比較典型的時間序列的數據分析和預測。其目的是根據之前的學習情況,對學生的學習情況進行建模。雖然這里描述的是學情跟蹤建模,但是,接下來描述的算法同樣適用于其它的類似的場景,例如股票漲跌情況預測。
在這一類應用場景中,與其它應用最重要的一個區別是,該類應用需要預測每一個輸出位置的概率。例如,需要預測每一只股票的漲跌。而其它場景需要預測的一般都是 one hot 類型。

RNN 是另外一種在深度學習領域常見的網絡模型,在語音識別,NLP 等需要對 sequence 數據建模的場景中應用廣泛。由于 sequence 數據的長度是變化的,所以,在實際工程中,常見的一種做法是指定一個 sequence 的長度 \(L\)(一般是最長的一個 sequence 的長度), 然后,把長度不等于 \(L\) 的數據進行 mask, 從而使得所有的 sequence 都具有相同的長度。然而,這種做法存在的問題是,在 sequence 的長度差別比較大的情況下,這樣生硬的進行 mask 的做法顯然不靠譜。當前,比較常見一種 trade-off 的做法是 Bucket RNN.

本篇記錄下我使用使用深度學習做圖片檢索的過程。
任務背景:有很多圖片,而且這些圖片沒有”類”的概念,也可以說我的每一類都只有一張圖片。所以,這種情況下不能用常見的基于”識別”的圖像檢索。在此之前,使用 Bag of Visual Words 的方法做出了一個版本,可以參考這篇.

這篇文章是 DeepMind 團隊使用深度學習。具體來說是卷積神經網絡來做語音生成的一個工作?;诨镜恼Z音生成,他們還做了 tts (text to speech), 音樂合成等。實驗效果很好。我本人一直很喜歡 DeepMind 團隊的工作,因為,他們對問題的提煉很好,所用的方法也比較簡單實用,效果常常出人意料地好。順著這篇文章,學習到了 dilate convolution 這個一個概念。dilate convolution 可以使用較少的計算就能 cover 到較大的 receptive field. 而且由于 dilate 本身的原因,還可以防止 overfitting.

在之前的機器學習和神經網絡中,對于非線性變換/激活函數比較常用的是 sigmoid, tanh 等這類比較 smooth 而且 被 bound 住的函數。然而目前,在深度學習尤其是卷積神經網絡中,用的最多的是 ReLU 函數。直觀上看,ReLU 是一個分段的線性函數,因此,就很容易想到 ReLU 應該不像 sigmoid 和 tanh 等這類 smooth & bounded 的函數那樣 powerful, 換句話說,ReLU 的效果應該比較差。然而,在實際應用中,ReLU 的效果要比 sigmoid 這類 smooth & bounded 的函數效果要好很多。經過現實的打臉之后,不禁要問,底為什么 ReLU 的效果會比 sigmoid 好呢?

Backpropagation 算法,全稱是 backward propagation of errors. 首先要說明這里面的邏輯,CNN 或者其它的神經網絡的優化本質上還是使用的 GD 算法,而 BP 只是求解 GD 的一種方法。所以,要搞明白 BP 算法,首先要搞明白 GD 算法。

Transfer learning 通常在訓練數據不足的情況下使用。所謂 transfer learning 最直觀的理解是給模型一個很好初始值。由于使用的 base model 通常都是在各大 benchmark 上取得 state of the art 效果的模型,因此,transfer learning 通常能帶來事半功倍的效果。另外,transfer learning 還可以防止網絡過早出現過擬合。當然,使用 transfer learning 的基礎是兩個數據集的數據分布是相似的。本文使用 BOT 2016 計算機視覺大賽的數據,詳細記錄了 transfer learning 的過程。

MXNet 的 DataIter 輸入的 Python 接口,不僅適用于圖片,而且適用于其它的文件格式。DataIter 比 numpy.array 的巨大的優點是 DataIter 不需要一次性把數據讀入到內存。想象一下在 CNN 的訓練中動輒幾百 G 的訓練數據,一次性載入內存比較不現實。另一方面,通過 MXNet 的 IO 接口調用,可以更靈活的控制數據的 IO 過程。

Ubuntu 16.04 發布有一段時間了,其中有一個我比較需要的亮點是對 4K 的顯示器支持的更好,一直想升級,但是,因為怕坑太多,一直沒有升級。前幾天官方發布了一個新的版本 16.04.1, 修復了大量的 bug, 于是,忍不住終于升級了。總體來說,14.04 到 16.04 的升級還是非常平滑的,除了 Emacs 使用 spacemacs 的配置出了一點問題,目前還沒有出現影響到工作的問題。搜狗輸入法正常使用,OpenCV 3.1.0 也能正常編譯安裝,CUDA 和 cudnn 都沒問題。chrome 和 virtualbox 也都正常。這篇 note 就來記錄一下在 Ubuntu 16.04 上安裝 OpenCV 3.1.0, CUDA8 cudnn 以及編譯 MXNet 的過程。

LSH (Local Sensitive Hash) 是一種在大規模數據中尋找相似數據的方法。LSH 算是一種隨機算法 (Random Algorithm). Random Algorithm 的特點是,它不能保證每次都返回準確的結果,但是,它是已較高的概率保證返回正確的結果,或者是與正確結果很接近的 value. 而且,如果計算資源足夠,概率可以 as high as desired. LSH 以小概率的搜索失敗為代價,大幅度降低了搜索時間復雜度。

BoVW (Bag of Visual Word) 是在傳統圖像檢索領域里比較常用的一種方法。大體可以分為三個步驟:特征提取,聚類 (類似于尋找一組基), 計算圖片在基上的坐標。算法的創新點是對圖片的特征尋找基。這樣,在基固定的情況下,所有的圖片都可以使用這組基來唯一的表示。而且,由于基的維數是固定的,也為相似度計算提供了極大的方便。根據檢索圖片的不同,可以選用不同的特征提取方法。

Softmax 是在神經網絡的中應用極其普遍的一種操作,搞清楚 softmax 極其對對應的 cross entropy loss function 的意義及數學推導過程可以有好的幫助理解源碼。在這篇文章中,詳細地記錄了 softmax, cross entropy loss, 和其對應的梯度的推導過程,最后,附加了 MXNet 中的梯度計算代碼,可以幫助直觀的理解開源代碼中梯度的計算過程。

方向梯度直方圖(英語:Histogram of oriented gradient, 簡稱 HOG)是應用在計算機視覺和圖像處理領域,用于目標檢測的特征描述器。這項技術是用來計算局部圖像梯度的方向信息的統計值。

Dropout 是一種非常非常通用的解決深層神經網絡中 overfitting 問題的方法,過程極其簡單,在調試算法中效果也非常有效,幾乎是在設計網絡過程中必用的技巧。

卷積神經網絡一般力求能夠做到 end to end 的訓練,end to end 訓練也是目前深度學習的主流。訓練中主要采用 Back Propagation 算法,而 BP 算法是我們早就學過的梯度下降算法的一種實現。因此,CNN 中的各種優化算法還是在梯度下降算法上面做手腳。在目前各種主流的深度學習工具中也都內置了各種常見的優化算法。然而,把優化算法封裝到黑盒中直接使用不利于對于問題的理解和更準確地找到好的優化方向。這篇文章的主要目的是總結和比較深度學習中各種常用的優化算法。希望能對神經網絡的優化起到一點點幫助,探究一下黑盒中的內容。

在 ImageNet 數據集上面的準確率首次超越人類。該論文中主要貢獻了兩點,一是 Parameter ReLU, 二是一種新的參數初始化的方法。這篇論文比 Batch Normalization 稍微早了幾天,Batch Normalization 在 ImageNet 上面的準確率也是超越人類。

卷積在 CNN 中是非常基礎的一個操作,但是,一旦寫出來,要畫不少的圖,所以,一直拖了下來,剛好最近看到一個比較好的圖,能夠說明卷積轉化為矩陣相乘就行操作的方法。

CAFFE 官方目前已經提供了一個 C++ 做預測的例子,目前大部分工作都轉移到了 MXNet, 經常被問到怎么用 CAFFE 做預測,之前基于 CAFFE 的 v0.9999 版本寫過一個預測。接口可能有變化,不過,基本思路應該是一樣的,希望對各位有所幫助.

googlenet 是 Google 在 ILSVRC-2014 中提出的一種網絡模型,并且在獲得了當年識別和檢測的第一名。googlenet 的特點是參數數量少,提升了計算資源的利用,融合多種尺度的卷積特征,網絡層數深 (22 層). 在 googlenet 的基礎上,Google 之后又給出了 Inception v1/v2/v3 以及后來在 Inception 中融入 Residual Net 中殘差概念的網絡結構。googlenet 是深度學習中比較經典的一個網絡模型。googlenet 中多種尺度的 kernel 提取的特征進行 concatenate 也是后來構建深層卷積網絡時常用的方法。googlenet 中多個 Loss Function 的做法也逐漸成為神經網絡訓練中常用的方法。另外,googlenet 使用了 nin 中的 \(1 \times 1\) 的卷積進行降維操作。

NIN 是我讀過的論文中幾篇比較重要的之一,NIN 主要是貢獻了 \(1 \times 1\) 的卷積這種玩法以及 global average pooling. 雖然 NIN 給出的模型沒有 googlenet vgg16/vgg19 等模型被大家大量的使用和 transfer learning, 但是,NIN 提出的這兩個技術影響了后來的一大批卷積神經網絡模型。

FaceNet 是 google 在 2015 年提出的基于深度學習的一個用于人臉識別,人臉驗證和人臉聚類的系統。在 FaceNet 中,google 直接學習了一個從人臉到歐幾里得空間的一個映射關系,在歐幾里得空間中點的距離就表示人臉的相似程度。因此,只要該映射學習的好,那么,使用歐幾里得空間中的特征向量進行各種有關人臉的任務就可以得到一個很好的效果。FaceNet 學習的是每張圖片在歐幾里得空間中的表示,從而,在歐幾里得空間中的距離就是人臉的相似性。學習到人臉在歐幾里得空間的表示之后,其他的關于人臉的任務就變得很簡單,例如,人臉驗證就是比較兩張人臉圖片的距離,人臉識別可以看成是一個簡單的 K 近鄰聚類,人臉聚類直接在歐幾里得空間中進行 K 均值聚類等。FaceNet 在 LFW 數據集上面的準確率為 \(99.63%\).

在訓練深層神經網絡的過程中,由于輸入層的參數在不停的變化,因此,導致了當前層的分布在不停的變化,這就導致了在訓練的過程中,要求 learning rate 要設置的非常小,另外,對參數的初始化的要求也很高。作者把這種現象稱為 internal convariate shift. Batch Normalization 的提出就是為了解決這個問題的。BN 在每一個 training mini-batch 中對每一個 feature 進行 normalize. 通過這種方法,使得網絡可以使用較大的 learning rate, 而且,BN 具有一定的 regularization 作用。

搜圖的一般過程是首先對于數據庫中的所有圖片提取并且保存特征,當 Query 輸入之后,按照相同的方法提取特征,然后,拿 Query feature 去數據庫中按照最近鄰的方法去搜索。在最近鄰算法中,距離經常采用歐幾里得距離。當數據庫中的圖片量非常大,例如上百萬之后,采用歐幾里得距離的最近鄰算法速度就會比較慢。這時,常用的方法是使用 binary code 來 represent 一張圖片。使用 binary code 的好處是,可以使用 Hamming distance 來計算兩張圖片的相似性.(Hamming distance 的計算方法是對兩個向量做異或操作). 這篇文章的工作是:能否直接從圖片中生成 binary compact code.

Deep residual net 微軟亞洲研究院視覺計算組提出的工作,開創了 152 層的 deep network, 在 ILSVRC2015 的幾個主要類別中取得第一名。而且,網絡的 tansfer 性能非常好,在 MS COCO(Microsoft COmmon Objects in Context) 中同樣獲得冠軍。

Fast R-CNN 比 R-CNN 主要的優點就是速度快。
那么,具體是通過什么樣的操作使得 Fast R-CNN 的速度要比 R-CNN 快很多呢?答案就是:在 R-CNN 中,在 region proposal 的 forward 中,每一個 region proposal 都需要單獨計算,而在 Fast R-CNN 中,region proposal 的計算過程是 share 的,這樣就減少了很多重復的計算。
另外一個優點是 Fast RCNN 的訓練過程是 end-to-end 的,這樣有兩個好處,一個是解決了在 RCNN 中的 post-hoc training 問題,另外一個就是簡化了訓練過程。

PCA 是一種比較常用的降維方法,由于算法太常見,而且計算方法幾乎是固定的,在使用的時候常常會作為一個黑盒,直接調用某個庫中封裝好的接口。這里想寫的是,PCA 的數學/物理意義, 目的是更好的理解 PCA, 知其然且之氣所以然。這樣,才能在工作中指導實踐,而不是一股腦地之間調用算法。

對 Linux 不太熟悉的同學,CUDA 和 MKL 的安裝最好選擇默認路徑,因為后面給出的例子都是在默認安裝路徑的下的配置。
教程不是非常詳細,如果了解 Linux 的一些基本內容,該教程可以幫助你順利完成 CAFFE 的安裝。
如果對 Linux 比較熟悉,完全可以拋開本教程,按照官方教程安裝成功,本教程主要是寫給對于 Linux 不是很熟悉的同學。

這里面記錄了工作中常用的而且非常有用的代碼,主要目的是為了在工作中方便拷貝,避免重新搜索。

為深入了解算法的細節,開始深入代碼學習,計劃把常見的機器學習算法親自實現一遍,加深理解。雖然成熟的算法都有非常成熟而且高度優化了的庫,但是,手動實現可以對算法有更清晰的認識。而且,大部分算法,工程實現經常無法完全與理論一致。例如在 Batch Normalization 中 test 的參數就是通過訓練階段的 moving average 來計算的,而不是重新跑一遍。

默認的 Ubuntu 的 kernel 附帶和非常多的本機并沒有的驅動,而且,尤其惡劣的是其內核中的 processor family 編譯的是 genetic x86_64, 所以,對于 i5/i7 系列的 CPU 中比較新的特定支不是很好,所以,這就使得我有了自己編譯 Ubuntu 內核的沖動。實時也證明,編譯內核對于壓榨機器性能還是蠻有效果的。由于之前用 Gentoo 的時候已經有了編譯內核的經驗,所以,編譯 Ubuntu 內核并沒有遇到很大的困難。

使用命令行進行圖像處理的方法,主要是 ffmpeg, 除此之外還有一些其它的工具。

工作中最常用的是 Python, 因此,把 Python 常用的代碼單獨列出來。

NumPy 是經常要使用到的數據操作工具,各種函數/方法非常多, 功能非常強大。

tmux 是我在工作中每天都要用到的工具,tmux 和 zsh 搭配使用簡直是終端神器。

記錄在云主機上搭建 shadowsocks 科學上網的方法。
shadowsocks 的基本思路就是,分別在 server 端和 client 端安裝相應的軟件,使用的時候,例如訪問 Google,client 的數據先發送到 server 端然后,server 端把數據轉發到 Google,Google 返回的數據也是類似的流程,需要經過我們的 server。

這里記錄了 Git 的操作方法和建立 Git 服務的方法。

Python 的配置,使用和部分包的用法

有關 OpenCV 的安裝,包括 Ubuntu 系統和 CentOS 系統。

Linux 系統上 samba 服務的安裝和使用方法

Linux 平臺在使用過程中經常會有一些非日常使用的命令或者小工具,但是,這些命令和工具往往是提升工作效率的利器,這里會不斷總結和更新工作中使用的這些命令和工具。另外,一些比較”重”的工具,例如 git, nginx, gcc 等在其內容增長到一定程度的時候為方便瀏覽會單獨開一篇。

MXNet 的官方不是很詳盡, 在使用的過程中經常要深入源碼, 這里記錄一下在使用的過程中總結的一些方法, 方便查閱.