tensorflow:: אופס:: DepthToSpace

#include <array_ops.h>

DepthToSpace עבור טנסורים מסוג T.

סיכום

מסדר מחדש נתונים מעומק לבלוקים של נתונים מרחביים. זהו הטרנספורמציה ההפוכה של SpaceToDepth. ליתר דיוק, אופציה זו מפיקה עותק של טנסור הקלט שבו ערכים מממד depth מועברים בלוקים מרחביים למימדי height width . ה-attr block_size מציין את גודל בלוק הקלט ואת אופן העברת הנתונים.

  • נתחי נתונים בגודל block_size * block_size מעומק מסודרים מחדש לבלוקים שאינם חופפים בגודל block_size x block_size
  • הרוחב של טנסור הפלט הוא input_depth * block_size , בעוד שהגובה הוא input_height * block_size .
  • קואורדינטות Y, X בתוך כל בלוק של תמונת הפלט נקבעות על ידי רכיב הסדר הגבוה של אינדקס ערוץ הקלט.
  • עומק טנזור הקלט חייב להיות מתחלק ב- block_size * block_size .

ה- data_format attr מציין את הפריסה של טנסור הקלט והפלט עם האפשרויות הבאות: "NHWC": [ batch, height, width, channels ] "NCHW": [ batch, channels, height, width ] "NCHW_VECT_C": qint8 [ batch, channels / 4, height, width, 4 ]

כדאי לשקול את הפעולה כהפיכת טנסור 6-D. למשל עבור data_format = NHWC, ניתן לציין כל אלמנט בטנזור הקלט באמצעות 6 קואורדינטות, מסודרות לפי הפחתת משמעות פריסת הזיכרון כמו: n,iY,iX,bY,bX,oC (כאשר n=אינדקס אצווה, iX, iY פירושו X או קואורדינטות Y בתוך תמונת הקלט, bX, byY פירושו קואורדינטות בתוך בלוק הפלט, oC פירושו ערוצי פלט). הפלט יהיה הקלט המופנה לפריסה הבאה: n,iY,bY,iX,bX,oC

פעולה זו שימושית לשינוי גודל ההפעלה בין פיתולים (אך שמירה על כל הנתונים), למשל במקום איגום. זה שימושי גם לאימון מודלים קונבולוציוניים בלבד.

לדוגמה, בהינתן קלט של צורה [1, 1, 1, 4] , data_format = "NHWC" ו-block_size = 2:

x = [[[[1, 2, 3, 4]]]]

  

This operation will output a tensor of shape [1, 2, 2, 1]:

   [[[[1], [2]],
     [[3], [4]]]]

כאן, לקלט יש אצווה של 1 ולכל רכיב אצווה יש צורה [1, 1, 4] , הפלט המתאים יהיה בעל 2x2 אלמנטים ויהיה בעל עומק של ערוץ 1 (1 = 4 / (block_size * block_size) ). צורת רכיב הפלט היא [2, 2, 1] .

עבור טנזור קלט עם עומק גדול יותר, כאן של צורה [1, 1, 1, 12] , למשל

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

פעולה זו, עבור גודל בלוק של 2, תחזיר את הטנסור הבא של הצורה [1, 2, 2, 3]

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

  

Similarly, for the following input of shape [1 2 2 4], and a block size of 2:

x =  [[[[1, 2, 3, 4],
       [5, 6, 7, 8]],
      [[9, 10, 11, 12],
       [13, 14, 15, 16]]]]

האופרטור יחזיר את הטנסור הבא של הצורה [1 4 4 1] :

x = [[[ [1],   [2],  [5],  [6]],
      [ [3],   [4],  [7],  [8]],
      [ [9],  [10], [13],  [14]],
      [ [11], [12], [15],  [16]]]]

  

Arguments:

  • scope: A Scope object
  • block_size: The size of the spatial block, same as in Space2Depth.

Returns:

Constructors and Destructors

DepthToSpace(const ::tensorflow::Scope & scope, ::tensorflow::Input input, int64 block_size)
DepthToSpace(const ::tensorflow::Scope & scope, ::tensorflow::Input input, int64 block_size, const DepthToSpace::Attrs & attrs)

Public attributes

operation
output

Public functions

node() const
::tensorflow::Node *
operator::tensorflow::Input() const
operator::tensorflow::Output() const

Public static functions

DataFormat(StringPiece x)

Structs

tensorflow::ops::DepthToSpace::Attrs

Optional attribute setters for DepthToSpace.

Public attributes

operation

Operation operation

תְפוּקָה

::tensorflow::Output output

תפקידים ציבוריים

DepthToSpace

 DepthToSpace(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  int64 block_size
)

DepthToSpace

 DepthToSpace(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  int64 block_size,
  const DepthToSpace::Attrs & attrs
)

צוֹמֶת

::tensorflow::Node * node() const 

מפעיל::tensorflow::קלט

 operator::tensorflow::Input() const 

אופרטור::tensorflow::פלט

 operator::tensorflow::Output() const 

פונקציות סטטיות ציבוריות

פורמט נתונים

Attrs DataFormat(
  StringPiece x
)