جریان تنسور:: عملیات:: BatchToSpaceND

#include <array_ops.h>

BatchToSpace برای تانسورهای ND از نوع T.

خلاصه

این عملیات بعد "بچ" 0 را به ابعاد M + 1 شکل block_shape + [batch] تغییر می‌دهد، این بلوک‌ها را دوباره به شبکه تعریف‌شده با ابعاد فضایی [1, ..., M] برمی‌گرداند تا نتیجه‌ای را با همان رتبه ورودی سپس ابعاد فضایی این نتیجه میانی به صورت اختیاری بر اساس crops برش داده می شود تا خروجی تولید شود. این برعکس SpaceToBatch است. برای توضیحات دقیق به زیر مراجعه کنید.

استدلال ها:

  • scope: یک شی Scope
  • ورودی: ND با شکل input_shape = [batch] + spatial_shape + remaining_shape ، که در آن spatial_shape دارای ابعاد M است.
  • block_shape: 1-D با شکل [M] ، همه مقادیر باید >= 1 باشند.
  • crops: 2-D با شکل [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 شکل [دسته / پرود(شکل_بلوک)، شکل_ورودی[1]، شکل_بلوک[0]، ...، شکل_ورودی[M]، شکل_بلوک[M-1]، شکل_ورودی[M+1]، ...، ورودی_شکل[N-1]]
  3. تغییر شکل permuted شکل برای تولید شکل‌های reshaped_permuted [دسته‌ای / پرود(شکل_بلوک)، شکل_ورودی[1] * شکل_بلوک[0]، ...، شکل_ورودی[M] * شکل_بلاک[M-1]، شکل_ورودی[M+1]، .. ., input_shape[N-1]]
  4. ابتدا و انتهای ابعاد [1, ..., M] reshaped_permuted را بر اساس crops برش دهید تا خروجی شکل ایجاد شود: [batch / prod(block_shape),input_shape[1] * block_shape[0] - crops[0, 0] - محصولات[0،1]، ...، شکل_ورودی[M] * شکل_بلوک[M-1] - محصولات[M-1،0] - محصولات[M-1،1]، شکل_ورودی[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