TensorFlow Liteで、SubGraphクラスが導入されている。
InterpreterクラスからこのSubGraphクラスへ実装を移動させたみたい。。。
Interpreterクラスでは、このSubGraphクラスのメソッドを呼ぶようになっている。
こんな感じに。
TfLiteStatus Interpreter::Invoke() { TfLiteStatus status = primary_subgraph().Invoke(); if (!allow_buffer_handle_output_) { for (int tensor_index : outputs()) { primary_subgraph().EnsureTensorDataIsReadable(tensor_index); } }
SubGraphクラスのInvokeメソッドの中では、OpInvokeメソッドを呼んでいます。
if (OpInvoke(registration, &node) == kTfLiteError) { status = ReportOpError(context_, node, registration, node_index, "failed to invoke"); }
OpInvokeメソッドは、
TfLiteStatus OpInvoke(const TfLiteRegistration& op_reg, TfLiteNode* node) { if (op_reg.invoke == nullptr) return kTfLiteError; return op_reg.invoke(context_, node); }
各Op対応するコードを呼んでいます。