تدفق التوتر:: العمليات:: العمق إلى الفضاء

#include <array_ops.h>

DepthToSpace للموترات من النوع T.

ملخص

إعادة ترتيب البيانات من العمق إلى كتل من البيانات المكانية. هذا هو التحول العكسي لـ SpaceToDepth. وبشكل أكثر تحديدًا، تقوم هذه العملية بإخراج نسخة من موتر الإدخال حيث يتم نقل القيم من بُعد depth في كتل مكانية إلى أبعاد height width . يشير block_size attr إلى حجم كتلة الإدخال وكيفية نقل البيانات.

  • تتم إعادة ترتيب أجزاء من البيانات بحجم block_size * block_size من العمق إلى كتل غير متداخلة بحجم block_size x block_size
  • عرض موتر الإخراج هو input_depth * block_size ، في حين أن الارتفاع هو input_height * block_size .
  • يتم تحديد إحداثيات Y وX داخل كل كتلة من صورة الإخراج بواسطة مكون الترتيب العالي لمؤشر قناة الإدخال.
  • يجب أن يكون عمق موتر الإدخال قابلاً للقسمة على block_size * block_size .

يحدد attr data_format تخطيط موتر الإدخال والإخراج مع الخيارات التالية: "NHWC": [ batch, height, width, channels ] "NCHW": [ batch, channels, height, width ] "NCHW_VECT_C": qint8 [ batch, channels / 4, height, width, 4 ]

من المفيد اعتبار العملية بمثابة تحويل لموتر سداسي الأبعاد. على سبيل المثال، بالنسبة إلى 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(
  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
)