首页
/ 【亲测免费】 frugally-deep 使用教程

【亲测免费】 frugally-deep 使用教程

2026-01-17 08:58:57作者:冯爽妲Honey

项目介绍

frugally-deep 是一个轻量级的头文件库,用于在 C++ 中使用 Keras(TensorFlow)模型。它是一个纯 C++ 编写的库,易于集成和使用,仅依赖于 FunctionalPlus、Eigen 和 json 这三个头文件库。frugally-deep 支持推理(模型预测)不仅适用于顺序模型,还适用于使用功能 API 创建的具有更复杂拓扑结构的计算图。它重新实现了 TensorFlow 的一个(小)子集,即支持预测所需的操作,从而生成比链接 TensorFlow 小得多的二进制文件。

项目快速启动

安装依赖

首先,确保你已经安装了以下依赖:

  • C++14 兼容的编译器(如 GCC 4.9、Clang 3.7 或 Visual C++ 2015)
  • Python 3.7 或更高版本
  • TensorFlow 2.17

下载和编译

  1. 克隆仓库:

    git clone https://github.com/Dobiasd/frugally-deep.git
    cd frugally-deep
    
  2. 安装 Python 依赖:

    pip install -r requirements.txt
    
  3. 将 Keras 模型转换为 frugally-deep 格式:

    from tensorflow.keras.models import load_model
    from frugally_deep import convert_model
    
    # 加载 Keras 模型
    keras_model = load_model('path_to_your_model.h5')
    
    # 转换模型
    convert_model(keras_model, 'output_model.json')
    
  4. 在 C++ 中使用转换后的模型:

    #include "fdeep/fdeep.hpp"
    #include <iostream>
    
    int main() {
        const auto model = fdeep::load_model("output_model.json");
        const auto result = model.predict(
            {fdeep::tensor(fdeep::tensor_shape(static_cast<std::size_t>(4)), std::vector<float>{1, 2, 3, 4})});
        std::cout << fdeep::show_tensors(result) << std::endl;
    }
    

编译 C++ 代码

使用以下命令编译 C++ 代码:

g++ -std=c++14 -Ipath_to_frugally_deep your_code.cpp -o your_program

应用案例和最佳实践

案例1:图像分类

假设你有一个用于图像分类的 Keras 模型,你可以使用 frugally-deep 在 C++ 中进行推理:

  1. 转换模型:

    from tensorflow.keras.models import load_model
    from frugally_deep import convert_model
    
    keras_model = load_model('image_classification_model.h5')
    convert_model(keras_model, 'image_classification_model.json')
    
  2. 在 C++ 中使用模型:

    #include "fdeep/fdeep.hpp"
    #include <iostream>
    
    int main() {
        const auto model = fdeep::load_model("image_classification_model.json");
        const auto result = model.predict(
            {fdeep::tensor(fdeep::tensor_shape(static_cast<std::size_t>(224 * 224 * 3)), load_image_data())});
        std::cout << fdeep::show_tensors(result) << std::endl;
    }
    

案例2:文本处理

假设你有一个用于文本处理的 Keras 模型,你可以使用 frugally-deep 在 C++ 中进行推理:

  1. 转换模型:

    from tensorflow.keras.models import load_model
    from frugally_deep import convert_model
    
    keras_model = load_model('text_processing_model.h5')
    convert_model(keras_model, 'text_processing_model.json')
    
登录后查看全文
热门项目推荐
相关项目推荐