Py学习  »  机器学习算法

一个完全用 C++ 编写的快速、灵活的机器学习库

GitHub项目进阶 • 5 月前 • 91 次点击  

用于机器学习的 C++ 独立库

github地址

https://github.com/flashlight/flashlight

Flashlight是一个由Facebook AI Research开发的完全用C++编写的机器学习库。

  • 完全内部可修改性,包括用于张量计算的内部 API

  • 占用空间小,核心速度低于 10 MB,C++ 代码数为 20k 行。

  • 高性能默认设置,通过现代 C++ 通过 ArrayFire 进行即时内核编译 张量库。

  • 强调效率和规模。

C++ 的原生支持和简单的可扩展性使 Flashlight 成为一个强大的研究框架,可以快速迭代新的实验设置和算法,几乎没有任何意见,而且不会牺牲性能。在单个存储库中,Flashlight 提供应用程序用于跨多个领域的研究:

  • 自动语音识别(以前为wav2letter项目)- 文档 | 教程

  • 图像分类

  • 物体检测

  • 语言建模

项目布局

手电筒分为几个部分:

  • flashlight/lib包含用于音频处理等的内核和独立实用程序。

  • flashlight/fl 是核心张量接口和神经网络库,默认使用 ArrayFire 张量库。

  • flashlight/pkg是构建在核心上的语音、视觉和文本的域包。

  • flashlight/app是核心库在跨领域机器学习中的应用。

快速开始

首先,构建并安装 Flashlight 并将其链接到您自己的项目< a i=4>.

Sequential 形成 Flashlight 序列Module用于链接计算。

实现一个简单的卷积网络很容易。

请参阅MNIST 示例,获取包含训练循环和数据集抽象的完整教程。

Variable 是一种基于磁带的抽象,它包装了 Flashlight 张量。基于磁带的Flashlight 中的自动微分很简单,并且按照您的预期工作。

自动评分示例

搭建和安装

安装vcpkg | 使用 Docker | 来源 | 来自来源vcpkg | 使用 Flashlight 构建您的项目

要求

编译至少需要:

  • 具有良好 C++17 支持的 C++ 编译器(例如 gcc/g++ >= 7)

  • CMake — 版本 3.10 或更高版本,以及 make

  • 基于 Linux 的操作系统。

如果从源代码构建完整依赖项列表以了解更多详细信息=4>.

构建/安装 Python 绑定的说明可以在此处找到

它旨在提供一种简单、高效的方式来构建和训练各种机器学习模型,包括深度学习、自然语言处理、计算机视觉等。Flashlight的设计目标是能够在各种硬件平台上以最优化方式运行,包括CPU、GPU和TPU等。

Flashlight的核心特性包括:

1. 灵活性:Flashlight提供了丰富的API,可以轻松地构建和自定义各种机器学习模型。

2. 高效性:Flashlight的底层实现使用了C++11/14/17等最新特性,以及各种并行计算技术,能够在各种硬件平台上以最优化方式运行。

3. 跨平台:Flashlight可以在各种操作系统上运行,包括Linux、Windows和macOS等。

4. 社区支持:Flashlight有一个活跃的社区,提供了丰富的文档和教程,以及各种示例代码,可以帮助用户快速上手。

Flashlight 最容易与 CMake 关联。Flashlight 在安装后导出以下 CMake 目标:

  • flashlight::flashlight— 包含手电筒库以及手电筒核心 autograd 和神经网络库。

  • flashlight::fl_pkg_runtime— 包含手电筒核心以及用于培训的常用实用程序(日志记录/标志/分布式实用程序)。

  • flashlight::fl_pkg_vision— 包含手电筒核心以及视觉管道的常用实用程序。

  • flashlight::fl_pkg_text— 包含手电筒核心以及处理文本数据的常用实用程序。

  • flashlight::fl_pkg_speech— 包含手电筒核心以及处理语音数据的常用实用程序。

  • flashlight::fl_pkg_halide— 包含手电筒核心和扩展件,可轻松与卤化物连接。

给定一个简单的project.cpp文件,其中包含并链接到 Flashlight:

#include <iostream>

#include <flashlight/fl/flashlight.h>

int main() {
fl::init();
fl::Variable v(fl::full({1}, 1.), true);
auto result = v + 10;
std::cout << "Tensor value is " << result.tensor() << std::endl; // 11.000
return 0;
}

以下 CMake 配置链接 Flashlight 和集包含目录:

cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(myProject project.cpp)

find_package(flashlight CONFIG REQUIRED)
target_link_libraries(myProject PRIVATE flashlight::flashlight)

带有vcpkg安装  Flashlight  

如果您使用 vcpkg 安装了 Flashlight,则可以通过运行以下命令构建上述 myProject 的 CMake 配置:

cd project && mkdir build && cd build
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=[path to vcpkg clone]/scripts/buildsystems/vcpkg.cmake \
-DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

使用源头   Flashlight 安装

如果使用 Flashlight 的源安装,CMake 将自动找到 Flashlight:

cd project && mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

如果使用 CMAKE_INSTALL_PREFIX 将 Flashlight 安装在自定义位置,请将 -Dflashlight_DIR=[install prefix]/share/flashlight/cmake 作为参数传递给 cmake 命令可以帮助CMake找到Flashlight。

使用 Docker 构建并运行 Flashlight

Flashlight 及其依赖项也可以使用提供的 Dockerfile 进行构建;请参阅随附的 Docker 文档了解更多信息。

贡献和联系

总的来说,Flashlight是一个功能强大、灵活、高效的机器学习库,适用于各种机器学习任务和硬件平台。

用于机器学习的 C++ 独立库

github地址

https://github.com/flashlight/flashlight

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/165928
 
91 次点击