Range¶
バージョン名: Range-4
カテゴリー: 生成
簡単な説明: Range 操作は、入力値 [start, stop) に従ってステップで一連の数値を生成します。
属性:
-
output_type
説明: 出力テンソルのタイプ
値の範囲: 任意の数値タイプ
タイプ: 文字列
必須: はい
入力:
1: “start” - T1 タイプのスカラー。必須。
2: “stop” - T2 タイプのスカラー。必須。
3: “step” - T3 タイプのスカラー。
output_type
へのキャスト後にstep
が 0 に等しい場合、動作は未定義です。必須。
出力:
1: 属性 output_typeで指定されたタイプのテンソル。
タイプ:
T1、T2、T3: 任意の数値タイプ。
詳細説明:
Range 操作では、次の式に従って、最初の入力 (start
) の値から始まり、2 番目の入力 (stop
) の値を含まない step
で 3 番目の入力の値に等しい一連の数値が生成されます。
前方 step
:
後方 step
:
i 番目の要素は次の式で計算されます。
計算は、すべての値を accumulate_type(output_type)
にキャストした後に行われます。accumulate_type
は、現在のハードウェアの output_type
よりも累積精度が高いか同等の精度を持つタイプです。例: fp16
の fp64
。要素数は浮動小数点タイプで次の式で計算されます。
これは PyTorch の操作 torch.arange
と連携しており、tensorflow 操作 tf.range
と連携するには、Range を呼び出す前にすべての入力を output_type
にキャストする必要があります。キャスト値はゼロに丸められます。
例:
例 1: ポジティブステップ
<layer ... type="Range">
<data output_type="i32">
<input>
<port id="0"> <!-- start value: 2 -->
</port>
<port id="1"> <!-- stop value: 23 -->
</port>
<port id="2"> <!-- step value: 3 -->
</port>
</input>
<output>
<port id="3">
<dim>7</dim> <!-- [ 2, 5, 8, 11, 14, 17, 20] -->
</port>
</output>
</layer>
例 2: ネガティブステップ
<layer ... type="Range">
<data output_type="i32">
<input>
<port id="0"> <!-- start value: 23 -->
</port>
<port id="1"> <!-- stop value: 2 -->
</port>
<port id="2"> <!-- step value: -3 -->
</port>
</input>
<output>
<port id="3">
<dim>7</dim> <!-- [23, 20, 17, 14, 11, 8, 5] -->
</port>
</output>
</layer>
例 3: 浮動小数点
<layer ... type="Range">
<data output_type="f32">
<input>
<port id="0"> <!-- start value: 1 -->
</port>
<port id="1"> <!-- stop value: 2.5 -->
</port>
<port id="2"> <!-- step value: 0.5 -->
</port>
</input>
<output>
<port id="3">
<dim>3</dim> <!-- [ 1.0, 1.5, 2.0] -->
</port>
</output>
</layer>