操作符是Relay操作中未定义的原始操作,例如add或conv2d。运算符在C++中的全局运算符注册表中声明。 TVM的Tensor操作符清单(TOPI)支持许多常见的操作符。
要注册操作符,用户必须提供操作符的实现、其类型以及任何其他所需的元数据。操作符注册表是一个基于列的存储,其中运算符是键,因此任何元数据(可能由优化过程引用)都可以注册为新列。
从Relay类型系统的角度来看,操作符是一个函数,因此操作符可以像其他任何函数一样被调用并具有函数类型。特别是,使用单个类型关系注册操作符类型,通常是专用于该操作符的关系。例如,将add运算符注册到Broadcast关系中,指示add的参数必须为张量,而返回类型为张量,其形状取决于其参数。
在漂亮地打印Relay程序时,操作符呈现时没有标记(例如conv2d,flatten)。操作符显式包含在程序中,并且可以通过指针唯一地标识。注意,可以使用相应的算术运算符以文本格式(例如+或*)作为句法糖来编写诸如加法和乘法之类的通用算术操作符。