我们正在尝试拥有自己的MLIR堆栈,以导入TFL模型并将其编译为特定的加速器。我们还将构建自己的运行时/模拟器来运行这些导入的模型。当前的工作方式是冻结TF.keras模型,转换为TFL,然后使用flatbuffer_translate获取MLIR tfl方言。
但是,要实现此目标,我需要传递一些属性以及一些对我们的目标体系结构特殊的操作。我最初想通过诸如conv2d之类的操作传递这些属性。但是,我不知道(如果可能的话)扩展tfl本机定义/支持的此类操作的方法。
然后,我尝试使用其自定义属性定义并注册一个自定义TF操作。该操作的语义将是一个身份函数,但我只是打算将其用作传递我的属性的占位符。一旦尝试过,我看到生成的TFL MLIR包含我的自定义操作,但是,这些属性被编码为不透明类型,并以字节流作为其值。
我找不到太多有关如何解码这些属性的文档。感谢您提供解码方面的提示或其他有助于实现我们目标的建议。
谢谢!
答案 0 :(得分:0)
您如何在输入中对其进行编码?我猜想您会看到它被编码为AttrValue(https://github.com/tensorflow/tensorflow/blob/b1e813e2ec9634ec0e6562b836e372e393f3de43/tensorflow/core/framework/attr_value.proto#L18),因此您可以像对待protobuf一样对它进行解码。