tensorflow:: عملیات:: BatchToSpaceND

#include <array_ops.h>

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

خلاصه

این عملیات، بُعد «دسته‌ای» ۰ را به ابعاد M + 1 از شکل block_shape + [batch] تغییر شکل می‌دهد، این بلوک‌ها را دوباره در شبکه‌ای که توسط ابعاد مکانی [1, ..., M] تعریف شده است، قرار می‌دهد تا نتیجه‌ای با رتبه مشابه ورودی به دست آید. سپس ابعاد مکانی این نتیجه میانی به صورت اختیاری بر اساس crops برش داده می‌شوند تا خروجی تولید شود. این معکوس SpaceToBatch است. برای توضیحات دقیق به زیر مراجعه کنید.

استدلال‌ها:

  • دامنه: یک شیء دامنه
  • ورودی: ND با شکل input_shape = [batch] + spatial_shape + remaining_shape ، که در آن spatial_shape دارای M بعد است.
  • block_shape: یک بعدی با شکل [M] ، همه مقادیر باید بزرگتر یا مساوی ۱ باشند.
  • crops: دوبعدی با شکل [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 دهید [batch / prod(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 از شکل [batch / 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] - crops[0,0] - crops[0,1], ..., input_shape[M] * block_shape[M-1] - crops[M-1,0] - crops[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