עזרה להגן על שונית המחסום הגדולה עם TensorFlow על Kaggle הצטרפו אתגר

זרימת טנסור :: אופ :: DepthToSpace

#include <array_ops.h>

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

סיכום

סידור מחדש של נתונים מהעומק לבלוקים של נתונים מרחביים. זהו השינוי ההפוך של SpaceToDepth. באופן ספציפי יותר, פעולה זו מפיקה עותק של טנדר הקלט שבו ערכים מממד depth מועברים בבלוקים מרחביים לממדי height width . 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 מציין את הפריסה של data_format הקלט והפלט עם האפשרויות הבאות: "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, bY פירושו קואורדינטות בתוך בלוק הפלט, 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 = 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 

אופרטור :: זרימת טנסור :: קלט

 operator::tensorflow::Input() const 

אופרטור :: זרימת טנסור :: פלט

 operator::tensorflow::Output() const 

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

פורמט נתונים

Attrs DataFormat(
  StringPiece x
)