標籤:

MXNet入坑(三)- MShadow和表達式模板的入門性介紹

生命可貴,能move則不copy。

TensorFlow的矩陣計算庫使用了eigen,而MXNet使用的是MShadow。這兩者都是使用的c++模板編程的語言特性。

所以有必要先學習一下模版元編程,這篇講的非常系統和簡明:

C++語言的表達式模板:表達式模板的入門性介紹 - CSDN博客blog.csdn.net圖標

mshadow的結構如下:

mxnet代碼解析之mshadow - CSDN博客blog.csdn.net

Tensor的shape與numpy.shape不一樣,最低維度從shape_[0]開始,重載操作符「=」除了拷貝已有Tensor,還可賦值中間運算結果表達式Exp,以及賦值標量。這裡對operator =的重載將運算操作延遲到了賦值階段,實現了Lazy Evaluation,避免了臨時內存分配。

推薦閱讀:

如何實現使用標準c++代替MSVC的__if_exists, 實現檢測模版參數類中是否有某個成員函數

TAG:mxnet | 模版 |