Roll

バージョン名: Roll-7

カテゴリー: データ移動

簡単な説明: Roll 操作は、指定された軸に沿ってテンソルの要素をシフトします。

詳細な説明: Roll は、最初の入力テンソルと同じ形状を持ち、axes テンソルで指定された次元に沿って要素がシフトされたテンソルを生成します。シフトサイズは shift 入力テンソルで指定されます。最後の位置を超えてシフトされた要素は、最初の位置から同じ順序で追加されます。

例 1 - shift = 1、axes = 0 の Roll 出力:

data    = [[ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  9],
        [10, 11, 12]]
output  = [[10, 11, 12],
        [ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  9]]

例 2 - shift = [-1, 2]、axes = [0, 1] の Roll 出力:

data    = [[ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  9],
        [10, 11, 12]]
output  = [[ 5,  6,  4],
        [ 8,  9,  7],
        [11, 12, 10],
        [ 2,  3,  1]]

例 3 - shift = [1, 2, 1]、axes = [0, 1, 0] の Roll 出力:

data    = [[ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  9],
        [10, 11, 12]]
output  = [[ 8,  9,  7],
        [11, 12, 10],
        [ 2,  3,  1],
        [ 5,  6,  4]]

属性:

利用可能な属性はありません。

入力:

  • 1: data T タイプのテンソル。必須。

  • 2: T_IND_1 タイプの shift スカラーまたは 1D テンソル。data テンソルの要素をシフトする桁数を指定します。shift がスカラーの場合、axes テンソルで指定された各次元は同じ shift 値でロールされます。shift が 1D テンソルの場合、axes は同じサイズの 1D テンソルである必要があり、axes テンソルの各次元は shift テンソルの対応する値によってロールされます。shift の値が正の場合、要素は正に (より大きなインデックスに向かって) シフトされます。それ以外の場合、要素は負の方向に (小さいインデックスに向かって) シフトされます。必須。

  • 3: axesT_IND_2 タイプのスカラーまたは 1D テンソルです。要素をシフトする軸を指定します。同じ軸が複数回参照される場合、その軸の合計シフトは、その軸に属するすべてのシフトの合計になります。axes に負の値がある場合、軸インデックスは次の式を使用して計算されます: N_dims + axis、ここで、N_dims - data テンソルの次元の合計数、axis - axes テンソルからの負の軸インデックス。必須。

出力:

  • 1: data テンソルと等しい形状とタイプを持つ出力テンソル。

タイプ:

  • T: サポートされるタイプ。

  • T_IND_1: int32 または int64

  • T_IND_2: int32 または int64

例:

例 1: “shift” と “axes” は 1D テンソルです。

 <layer ... type="Roll">
     <input>
         <port id="0">
             <dim>3</dim>
             <dim>10</dim>
             <dim>100</dim>
             <dim>200</dim>
         </port>
         <port id="1">
             <dim>2</dim>
         </port>
         <port id="2">
             <dim>2</dim> <!-- shifting along specified axes with the corresponding shift values -->
         </port>
     </input>
     <output>
         <port id="0">
             <dim>3</dim>
             <dim>10</dim>
             <dim>100</dim>
             <dim>200</dim>
         </port>
     </output>
 </layer>

例 2: “shift” 値はスカラーであり、複数の軸が指定されます。

 <layer ... type="Roll">
     <input>
         <port id="0">
             <dim>3</dim>
             <dim>10</dim>
             <dim>100</dim>
             <dim>200</dim>
         </port>
         <port id="1">
             <dim>1</dim>
         </port>
         <port id="2">
             <dim>2</dim> <!-- shifting along specified axes with the same shift value -->
         </port>
     </input>
     <output>
         <port id="0">
             <dim>3</dim>
             <dim>10</dim>
             <dim>100</dim>
             <dim>200</dim>
         </port>
     </output>
 </layer>