tensorflow:: ops:: עומק למרחב

#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-ממדי. לדוגמה, עבור data_format = NHWC, כל אלמנט בטנזור הקלט ניתן לציון באמצעות 6 קואורדינטות, המסודרות לפי חשיבות יורדת של פריסת הזיכרון כדלקמן: n,iY,iX,bY,bX,oC (כאשר n=אינדקס אצווה, iX, iY פירושו קואורדינטות X או Y בתוך תמונת הקלט, bX, bY פירושו קואורדינטות בתוך בלוק הפלט, oC פירושו ערוצי פלט). הפלט יהיה הקלט המומר לפריסה הבאה: n,iY,bY,iX,bX,oC

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

לדוגמה, בהינתן קלט של shape [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(
  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
)

צוֹמֶת

::tensorflow::Node * node() const 

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

 operator::tensorflow::Input() const 

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

 operator::tensorflow::Output() const 

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

פורמט נתונים

Attrs DataFormat(
  StringPiece x
)