[036] Microsoft CNTK Part 1

喔耶!又有大頭的 C++ 程式碼可供觀賞,這次來自微軟:

Microsoft is making the tools that its own researchers use to speed up advances in artificial intelligence available to a broader group of developers by releasing its Computational Network Toolkit on GitHub.

同領域的另一方有 Google TensorFlow,發佈時間較早,專案使用了 Python and C++。(不知道跟 Google 另一個專案 DeepMind 有無關連?)

依據微軟提供的數據,CNTK 似乎打趴 TensorFlow。

這領域我還沒深入研究,僅匆匆一瞥 CNTK 程式碼,發覺一有趣(但我不怎麼喜歡)的用法:將

#ifndef let
#define let const auto
#endif

// And used somewhere in same file.

vector<wstring> args(argv, argv + argc);
let exePath = ConsumeArg(args);

定義了 let macro(很多程式語言有 let 關鍵字,但 C++ 沒有),而且是放在 .cpp 裡頭,其他的 .cpp 也有同樣的定義。

另外發現一些「小物」:

  • Unit Test 用 [Boost.Test],End-to-End 測試用 Python 來驅動。
  • 似乎用到了 NVIDIA CUDA,其中一個檔名為 BestGpu.cpp,是在暗示什麼嗎?
  • Windows 相依的程式碼不多,應該是有考慮跨平台。

未完,希望還有續集...