如何使用keras2c?

问题描述 投票:0回答:1

我正在使用论文:Keras2c:用于转换 Keras 神经网络的库 网络到实时兼容的 C,以将 Keras 中制作的模型转换为 C。因为我需要在计算能力很小的硬件上对其进行编译。 API如何转型?基本上,它从扩展模型 (.h) 加载权重并将其转换为三个不同的文件:

.c 调用时会通过神经网络复制前向传递(推理)

.h是与生成的源文件关联的头文件,包含函数声明。

_test_suite.c 包含一个主程序,用于通过生成的代码运行示例输入,以确保它产生与原始 python 模型相同的输出。

因此,keras2c 文档展示了它的用法。但是,当我执行以下函数时:

from keras2c import k2c
k2c("classification_model.h5", "modelC", malloc=False, num_tests=10, verbose=True)

显示以下错误:

Traceback (most recent call last):
  File "c:\Users\dossa\Desktop\keras2c-master\convert.py", line 2, in <module>
    k2c("classification_model.h5", "modelC", malloc=False, num_tests=10, verbose=True)
  File "c:\Users\dossa\Desktop\keras2c-master\keras2c\keras2c_main.py", line 216, in k2c       
    check_model(model, function_name)
  File "c:\Users\dossa\Desktop\keras2c-master\keras2c\check_model.py", line 232, in check_model
    raise AssertionError(log)
AssertionError: The following errors were found: 
Functional' is not supported at this time. 

有人用过这个API吗,能帮我解决这个问题吗?

python c tensorflow keras
1个回答
0
投票

我不熟悉 keras2c(虽然想法很酷),但我可能可以告诉你为什么会发生错误以及如何修复它。

Keras 有两个 API:功能性 API https://keras.io/guides/function_api/ 和顺序 API https://keras.io/guides/sequential_model/

从错误信息来看,keras2c似乎只支持顺序API。

尝试在简单的顺序模型上运行 keras2c,首先看看是否有效:

import keras
from keras import layers
model = keras.Sequential(
    [
        layers.Dense(2, activation="relu"),
        layers.Dense(3, activation="relu"),
        layers.Dense(4),
    ]
)

from keras2c import k2c
k2c(model, "modelC", malloc=False, num_tests=10, verbose=True)

如果可行,您必须弄清楚您真正想要使用的模型是否可以重写为等效的顺序模型。

© www.soinside.com 2019 - 2024. All rights reserved.