您應該親身體驗的 3 個 C++ 機器學習庫

已發表: 2020-12-10

今天,無論我們在哪裡,機器學習都以某種形式存在於我們身邊。 人工智能的這個子集已經在該行業的所有平行領域中找到了不同的應用,這是正確的。 儘管機器學習是一個新興領域,但它開闢了許多探索的可能性。

現在的問題是,機器學習項目使用哪種編程語言?

Python 和 C++ 是兩種最流行的編程語言。 這兩種語言都擁有活躍的社區、專門的工具支持、廣泛的庫生態系統和值得稱道的運行時性能。 然而,今天這篇文章的重點將是 C++ 中的機器學習。

目錄

為什麼 C++ 用於機器學習?

機器學習需要重型 CPU 性能,這是一個公認的事實,而這正是 C++ 所保證的。 在速度和性能方面,C++ 落後於 Python、Java 甚至 C#。 使用 C++ 進行機器學習的另一個主要優點是它具有指針支持,這是許多流行的編程語言中不具備的功能。

為了在 C++ 中成功實現機器學習,首先要做的是熟悉 C++ 庫。 值得慶幸的是,C++ 有一些很棒的機器學習庫,包括 Shark、MLPack 和 GRT(手勢識別工具包)。

現在,讓我們深入討論 C++ 中的機器學習庫。

C++ 中的機器學習庫

1.鯊魚

Shark 是 C++ 中的開源模塊化庫。 它是機器學習的完美庫,因為它廣泛支持線性回歸、k-means、神經網絡和聚類等監督學習算法。

Shark 還包括許多用於線性和非線性優化的方法、基於內核的學習算法、數值優化以及許多其他 ML 技術。 它是研究和構建實際應用程序的理想工具。 Shark 擁有出色的文檔,並且與 Linux、Windows 和 macOS 兼容。

如何安裝鯊魚?

要安裝 Shark,您必須從官方下載頁面獲取源包 在此之後,您必須通過編寫以下代碼來構建庫:

mkdir 鯊魚/構建/

cd 鯊魚/構建

製作../

製作

你必須知道 Shark 有兩個依賴——BoostCMake 在 Linux 和 Windows 上,通常使用 ATLAS,而在 macOS 上,Accelerate 是默認的線性代數庫。 在 macOS 中,您可以使用 MacPorts 來獲取必要的包,如下所示:

須藤端口安裝升壓cmake

但是,在 Ubuntu 下,您必須使用以下語句安裝所需的軟件包:

sudo apt-get install cmake cmake-curses-gui libatlas-base-dev libboost-all-dev

以下是安裝 Shark 的步驟:

  • 首先,從downloads 頁面下載源碼包並解壓。
  • 啟動 CMake GUI
  • 選擇“源代碼在哪裡”設置解壓後的 Shark 位置的路徑。
  • 選擇“構建目錄的位置”以設置要存儲 Visual Studio 項目文件的路徑。
  • 選擇“添加條目”選項。 現在,添加一個 PATH 類型的條目 BOOST_ROOT 並將其設置到您的 boost 安裝目錄。
  • 同樣,添加一個 PATH 類型的條目 BOOST_LIBRARYDIR 並將其設置為您的 boost 庫目錄。
  • 最後,選​​擇 apt Visual Studio 編譯器並雙擊“配置”選項,然後單擊“生成”選項。

2.mlpack

mlpack 是一個專門為提高性能而設計的 C++ 庫。 它承諾為開創性的 ML 算法提供快速且可擴展的實現。 這個 C++ 庫的獨特之處在於它將 ML 算法提供為簡單的命令行程序、Python 綁定、Julia 綁定和 C++ 類,所有這些都可以集成到更大規模的 ML 解決方案中。

如何安裝mlpack?

MLPack 的安裝過程因平台而異。

對於 Python,可以通過 pip 或 conda 獲取源碼包,如下所示:

點安裝 mlpack

conda install -c conda-forge mlpack

您可以參考Python 快速入門指南中的 mlpack了解更多詳細信息。

對於 Julia,您可以通過 Pkg 獲取源代碼,如下所示:

導入包;

Pkg.add(“mlpack”)

對於 Ubuntu、Debian、Fedora 和 Red Hat,您可以使用包管理器安裝 mlpack。 mlpack命令行快速入門指南是一個很好的起點。 您也可以按照Linux 構建教程從源代碼構建它

對於 Windows,您可以下載預構建的二進製文件 – Windows 64 位 – MSI InstallerWindows 64 位 – ZIP 您也可以使用像vcpkg這樣的包管理器來安裝它,或者按照Windows 構建教程從源代碼構建

來到 macOS,您可以通過 homebrew 安裝該庫,如下所示:

沖泡安裝mlpack

閱讀:薪酬最高的機器學習工作

3. GRT(手勢識別工具包)

GRT 或 Gesture Recognition Toolkit 是一個開源、跨平台的 C++ 庫。 它專為實時手勢識別而設計。 它包括一個全面的 C++ API,並通過一個簡潔且易於使用的 GUI(圖形用戶界面)進一步鞏固。

GRT 不僅對初學者友好,而且非常容易集成到現有的 C++ 項目中。 它與任何傳感器/數據輸入兼容,您可以使用獨特的手勢對其進行訓練。 此外,GRT 可以在需要時適應您的自定義處理或特徵提取算法。

如何安裝 GRT?

您必須做的第一件事是下載GRT 包。 在此之後,您必須在主手勢識別工具包文件夾中找到 GRT 文件夾,並將 GRT 文件夾(包括所有子文件夾)添加到所需的項目中。

您可以通過將存儲在 GRT 文件夾中的完整代碼添加到您的 C++ 項目來開始使用 GRT。 如果您使用諸如 VisualStudio 或 XCode 之類的 IDE,您可以按照以下路徑將 GRT 文件夾文件添加到您的項目中 - “文件 -> 將文件添加到項目”。 您還可以將 GRT 文件夾(從 Finder 或 Windows 資源管理器)拖到 IDE 中,以將 GRT 文件夾中的所有文件添加到您的項目中。

將 GRT 文件夾中包含的代碼添加到項目後,您就可以使用所有 GRT 函數/類。 您所要做的就是將以下兩行代碼添加到要使用 GRT 代碼的項目的頭文件頂部:

#include “GRT/GRT.h”

int main (int argc, const char * argv[])

{

//您項目的主要代碼...

}

在此代碼中,第一行將主 GRT 頭文件 (GRT.h) 添加到項目中。 GRT.h 文件包含所有 GRT 模塊頭文件,因此您不必手動輸入任何其他 GRT 頭文件。 但是,第二行聲明正在使用 GRT 命名空間。 這消除了每次你想使用 GRT 類時編寫 GRT:: WhatEverClass 的需要——你可以編寫 WhatEverClass 並完成它。

但是,請記住,您必鬚根據您使用的 IDE 指定您在硬盤驅動器上存儲 GRT 文件夾的物理路徑。

另請閱讀:機器學習職業

結論

這三個 C++ 庫非常適合處理您幾乎所有的 ML 需求。 掌握 C++ 機器學習的關鍵是首先學習這些庫,了解它們的特性和功能,然後將它們實現到特定的 ML 要求。

如果您有興趣了解有關機器學習的更多信息,請查看 IIIT-B 和 upGrad 的機器學習和人工智能 PG 文憑,該文憑專為工作專業人士設計,提供 450 多個小時的嚴格培訓、30 多個案例研究和作業、IIIT- B 校友身份、5 個以上實用的實踐頂點項目和頂級公司的工作協助。

哪一個更適合機器學習——C++ 還是 Python?

C++ 和 Python 是使用最廣泛的兩種編程語言。 但是,根據手頭的任務,必須選擇使用哪一個。 在遊戲創建和學習系統方面,C++ 是首選語言。 但是,在機器學習方面,Python 是最好的選擇。 對於涉及數據系統的任務,它也很方便。 此外,由於 Python 的語法易於掌握,因此建議初學者使用。 Python 的另一個顯著特點是它是一種解釋型語言,這意味著 Python 代碼在運行時不會被翻譯成機器可讀的。

機器學習面臨哪些挑戰?

由於數據是機器學習中最關鍵的輸入,機器學習專業人員面臨的問題之一是缺乏高質量的數據。 如果數據與輸入和輸出變量不能很好地擬合,也會出現欠擬合。 數據至關重要,但過多的數據會導致過擬合,導致機器學習算法性能不佳。 使用機器學習模型找到準確的結果很簡單,但所需的時間是巨大的,這是另一個困難。

靜態庫和動態庫有何不同?

在大小方面,靜態庫和動態庫彼此不同。 由於動態庫僅保留或存儲在內存中,因此動態庫的大小比靜態庫要小得多。 可執行文件包含已構建或鏈接的靜態庫。 它是您的應用程序的一個組件,沒有其他人可以使用它。 雖然動態庫是獨立構建、鏈接和安裝的,但它可以被任何程序訪問。 這減少了程序大小,同時也隱藏了代碼。