点击蓝字
关注我们,让开发变得更有趣
作者 | 占俊坚
排版 | 李擎
摘要
在 OpenVINO™ 2024.1 release 版本中,我为 OpenVINO™ 添加了 TensorFlow 中的 Rint operation 以及 PyTorch 中的 aten::bucketize operation 的支持,在此分享我的实现过程,给有兴趣参与 OpenVINO™ 开源项目的同学参考,希望大家都能积极参与到社区建设当中来!
OpenVINO™ 代码贡献持续开放中,感兴趣的同学可以点击“化身英特尔‘Issues 猎手’,共创百万用户开源生态!”了解详情。
OpenVINO™
介绍
OpenVINO™ 中用来支持 TensorFlow 模型的前端组件称为 TensorFlow Frontend (简称“TF FE” )。TF FE 将一个用 TensorFlow opset 表示的模型转成用 OpenVINO™ opset 表示的模型。为了支持模型中含有 Rint 操作的模型的推理,TF FE 需要支持这个操作。同理 PyTorch 前端需要支持 aten::bucketize 操作。
TensorFlow opset :
https://www.tensorflow.org/api_docs/python/tf/raw_ops
OpenVINO™ opset:
https://docs.openvino.ai/archive/2023.2/openvino_docs_ops_opset13.html
Rint:
https://www.tensorflow.org/api_docs/python/tf/raw_ops/Rint
OpenVINO™
TensorFlow operation 开发过程

1.在 TF FE 的 op 目录为 Rint 实现对应的 loader
一个 loader 负责对一种 TensorFlow 操作进行转换。loader 的职责就是解析 operation 的 attributes, 读取输入,并通过 OpenVINO™ 已有的 operations 去表达。以我的实现为例,我实现了 src/frontends/tensorflow_common/src/op/rint.cpp 文件,内容如下:
// Copyright (C) 2018-2024 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include "common_op_table.hpp"
#include "openvino/op/round.hpp"
using namespace std;
using namespace ov::op;
namespace ov {
namespace frontend {
namespace tensorflow {
namespace op {
OutputVector translate_rint_op(const NodeContext& node)

最低0.47元/天 解锁文章
2808

被折叠的 条评论
为什么被折叠?



