问题描述
我想将使用 TensorFlow 创建的机器学习模型加载到使用 JUCE6 制作的 C++ 音频应用程序中。为了在 C++ 中使用 TensorFlow,我使用了 TensorFlow 包装器 CppFlow。我有一个问题,我不知道如何加载模型以在音频流中使用。
Tensorflow 模型加载 cppFlow 如下:
cppflow::model model("path_to_model");
然后我可以像这样在我的音频处理块中使用模型。
auto output = model(input);
这是一个例子:https://github.com/serizba/cppflow/blob/master/examples/load_model/main.cpp
如果我在我的 AudioProcessingBlock 中这样实现它,应用程序会调用 abort() 而没有错误代码并说:调试错误!可能是由于 cpu 溢出,因为模型加载了每个样本 -> 每秒 44k 次。 如果我在我的 preparetoPlay 方法中实现模型加载(调用一次),无论如何我都会把它放在那里,应用程序运行得很好,但我无法访问我的 AudioProcessingBlock 中的模型。因此我不能打电话
auto output = model(input);
.
cppflow::model::model 是一个内联函数:
inline model::model(const std::string &filename){
this-> graph = {TF_NewGraph(),TF_DeleteGraph()};
...
完整的实现可以在这里找到,从第 46 行开始:https://github.com/serizba/cppflow/blob/master/include/cppflow/model.h
如何将模型保存在我的类中的私有变量中?所以我可以将模型实例化一次,并在我的应用程序运行时在 AudioProcessingBlock 中使用它。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)