范围

范围 - 11

版本

  • 名称: 范围 (GitHub)

  • : main

  • 自版本: 11

  • 函数: True

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本11起可用。

摘要

生成一个张量,其中包含从start开始,以delta为增量,直至limit(不包括)的一系列数字。

范围输出中的元素数量如下计算

number_of_elements = max( ceil( (limit - start) / delta ) , 0 )

下面显示了确定输出内容的伪代码

for(int i=0; i<number_of_elements; ++i) {
  output[i] =  start + (i * delta);
}

示例1

Inputs: start = 3, limit = 9, delta = 3
Output: [3, 6]

示例2

Inputs: start = 10, limit = 4, delta = -2
Output: [10, 8, 6]

函数体

此运算符的函数定义。

<
  domain: "",
  opset_import: ["" : 11]
>
Range (start, limit, delta) => (output)
{
   sub_result = Sub (limit, start)
   sub_result_casted = Cast <to: int = 1> (sub_result)
   delta_casted = Cast <to: int = 1> (delta)
   div_result = Div (sub_result_casted, delta_casted)
   ceil_result = Ceil (div_result)
   ceil_result_relu = Relu (ceil_result)
   ceil_result_relu_int = Cast <to: int = 7> (ceil_result_relu)
   ceil_result_relu_bool = Cast <to: int = 9> (ceil_result_relu)
   variadic_output, output = Loop (ceil_result_relu_int, ceil_result_relu_bool, start) <body: graph = loop_body_attribute (int64 i, bool cond,  prev) => ( cond_out,  current,  range) {
      cond_out = Identity (cond)
      current = Add (prev, delta)
      range = Identity (prev)
   }>
}

输入

  • start (异构) - T

    标量。输出值的范围的第一个条目。

  • limit (异构) - T

    标量。输出值的范围的独占上限。

  • delta (异构) - T

    标量。要步进的值。

输出

  • output (异构) - T

    一个与输入类型相同的1维张量,包含生成的数值范围。

类型约束

  • T in ( tensor(double), tensor(float), tensor(int16), tensor(int32), tensor(int64) )

    将输入类型约束为常见的数值类型张量。