تدفق التوتر:: العمليات:: BatchToSpaceND

#include <array_ops.h>

BatchToSpace لموترات ND من النوع T.

ملخص

تعمل هذه العملية على إعادة تشكيل البعد "الدُفعة" 0 إلى أبعاد M + 1 للشكل block_shape + [batch] ، وتشذير هذه الكتل مرة أخرى في الشبكة المحددة بواسطة الأبعاد المكانية [1, ..., M] للحصول على نتيجة باستخدام نفس رتبة الإدخال. يتم بعد ذلك اقتصاص الأبعاد المكانية لهذه النتيجة المتوسطة بشكل اختياري وفقًا crops لإنتاج المخرجات. هذا هو عكس SpaceToBatch. انظر أدناه للحصول على وصف دقيق.

الحجج:

  • النطاق: كائن النطاق
  • الإدخال: ND مع الشكل input_shape = [batch] + spatial_shape + remaining_shape ، حيث يكون spatial_shape له أبعاد M.
  • block_shape: 1-D بالشكل [M] ، يجب أن تكون جميع القيم >= 1.
  • المحاصيل: ثنائي الأبعاد بالشكل [M, 2] ، يجب أن تكون جميع القيم >= 0. تحدد crops[i] = [crop_start, crop_end] مقدار الاقتصاص من بُعد الإدخال i + 1 ، والذي يتوافق مع البعد المكاني i . من المطلوب أن يكون crop_start[i] + crop_end[i] <= block_shape[i] * input_shape[i + 1] .

هذه العملية تعادل الخطوات التالية:

  1. إعادة تشكيل input لإعادة reshaped الشكل: [block_shape[0]، ...، block_shape[M-1]، Batch / prod(block_shape)، input_shape[1]، ...، input_shape[N-1]]
  2. تبديل أبعاد reshaped لإنتاج شكل permuted [دفعة / همز(block_shape)،input_shape[1]، block_shape[0]، ...، input_shape[M]، block_shape[M-1]،input_shape[M+1]، ...، input_shape[N-1]]
  3. إعادة permuted لإنتاج شكل reshaped_permuted [دُفعة / prod(block_shape),input_shape[1] * block_shape[0], ..., input_shape[M] * block_shape[M-1],input_shape[M+1], .. ., input_shape[N-1]]
  4. قم بقص بداية ونهاية الأبعاد [1, ..., M] من reshaped_permuted وفقًا crops لإنتاج مخرجات الشكل: [batch / prod(block_shape),input_shape[1] * block_shape[0] - المحاصيل[0, 0] - المحاصيل[0,1]، ..., input_shape[M] * block_shape[M-1] - المحاصيل[M-1,0] - المحاصيل[M-1,1],input_shape[M+1] ، ...، input_shape[N-1]]

بعض الأمثلة:

(1) بالنسبة للإدخال التالي للشكل [4, 1, 1, 1] و block_shape = [2, 2] crops = [[0, 0], [0, 0]] :

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

موتر الإخراج له شكل [1, 2, 2, 1] وقيمة:

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

(2) بالنسبة للإدخال التالي للشكل [4, 1, 1, 3] و block_shape = [2, 2] crops = [[0, 0], [0, 0]] :

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

موتر الإخراج له شكل [1, 2, 2, 3] وقيمة:

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

(3) بالنسبة للإدخال التالي للشكل [4, 2, 2, 1] و block_shape = [2, 2] crops = [[0, 0], [0, 0]] :

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

موتر الإخراج له شكل [1, 4, 4, 1] وقيمة:

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

(4) بالنسبة للإدخال التالي للشكل [8, 1, 3, 1] ، block_shape = [2, 2] ، crops = [[0, 0], [2, 0]] :

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

موتر الإخراج له شكل [2, 2, 4, 1] وقيمة:

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

العوائد:

  • Output : موتر الإخراج.

البنائين والمدمرين

BatchToSpaceND (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input block_shape, :: tensorflow::Input crops)

الصفات العامة

operation
output

الوظائف العامة

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

الصفات العامة

عملية

Operation operation

الإخراج

::tensorflow::Output output

الوظائف العامة

BatchToSpaceND

 BatchToSpaceND(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input block_shape,
  ::tensorflow::Input crops
)

العقدة

::tensorflow::Node * node() const 

المشغل::tensorflow::الإدخال

 operator::tensorflow::Input() const 

المشغل::tensorflow::الإخراج

 operator::tensorflow::Output() const