SpaceToBatch برای تانسورهای ND از نوع T.
این عملیات ابعاد «مکانی» «[1، ...، M]» ورودی را به شبکهای از بلوکهای شکل «block_shape» تقسیم میکند، و این بلوکها را با بعد «دستهای» (0) به گونهای در هم میریزد که در خروجی ، ابعاد فضایی «[1، ...، M]» با موقعیت درون شبکه مطابقت دارد، و بعد دسته ای هم موقعیت درون یک بلوک فضایی و هم موقعیت دسته ای اصلی را ترکیب می کند. قبل از تقسیم به بلوکها، ابعاد فضایی ورودی به صورت اختیاری بر اساس «پردهها» صفر میشود. برای توضیحات دقیق به زیر مراجعه کنید.
این عملیات معادل مراحل زیر است:
1. ابتدا و انتهای ابعاد «[1، ...، M]» ورودی را با توجه به «paddings» صفر کنید تا «padded» به شکل «padded_shape» ایجاد شود.
2. شکل "padded" را به "reshaped_padded" تغییر دهید:
[دسته] + [شکل_بالشتکی[1] / شکل_بلاک[0]، شکل_بلاک[0]، ...، شکل_بالشتک[M] / شکل_بلاک[M-1]، شکل_بلاک[M-1]] + شکل_باقی
3. ابعاد «تغییرشده_پردهشده» را تغییر دهید تا شکل «جایگشتشده_شکلدار_پردهشده» را ایجاد کنید:
block_shape + [batch] + [padded_shape[1] / block_shape[0]، ...، padded_shape[M] / block_shape[M-1]] + باقیمانده_شکل
4. شکل "permuted_reshaped_padded" را تغییر دهید تا "block_shape" در بعد دسته ای صاف شود و یک تانسور خروجی از شکل تولید شود:
[دسته * prod(block_shape)] + [padded_shape[1] / block_shape[0]، ...، padded_shape[M] / block_shape[M-1]] + باقیمانده_شکل
چند نمونه:
(1) برای ورودی شکل «[1، 2، 2، 1]»، «شکل_block = [2، 2]» و «بالشتک ها = [[0، 0]، [0، 0]]»:
x = [[[[1], [2]], [[3], [4]]]]
تانسور خروجی دارای شکل «[4، 1، 1، 1]» و مقدار است: [[[[1]]], [[[2]]], [[[3]]], [[[4]]]]
(2) برای ورودی شکل زیر «[1, 2, 2, 3]», «block_shape = [ 2, 2]`، و `paddings = [[0, 0], [0, 0]]`: x = [[[[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]]]]
تانسور خروجی شکل «[4، 1، 1، 3]» و مقدار: [[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]
(3) برای ورودی شکل «[1، 4، 4، 1]»، «شکل_block = [2، 2]» و «بالشتک ها = [[0، 0]، [0، 0]]»: x = [[[[1], [2], [3], [4]],
[[5], [6], [7], [8]],
[[9], [10], [11], [12]],
[[13], [14], [15], [16]]]]
تانسور خروجی دارای شکل «[4, 2, 2, 1]» و مقدار است: x = [[[[1], [3]], [[9], [11]]],
[[[2], [4]], [[10], [12]]],
[[[5], [7]], [[13], [15]]],
[[[6], [8]], [[14], [16]]]]
(4) برای ورودی شکل زیر «[2, 2, 4, 1]», block_shape = «[ 2, 2]` و paddings = `[[0, 0], [2, 0]]`: x = [[[[1], [2], [3], [4]],
[[5], [6], [7], [8]]],
[[[9], [10], [11], [12]],
[[13], [14], [15], [16]]]]
تانسور خروجی شکل «[8, 1, 3, 1]» و مقدار: 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]]]]
از جمله، این عمل برای کاهش پیچ خوردگی عضلانی به کانولوشن معمولی مفید است. روش های عمومی
خروجی <T> | asOutput () دسته نمادین یک تانسور را برمیگرداند. |
static <T، U تعداد را گسترش می دهد، V شماره را گسترش می دهد> SpaceToBatchNd <T> | |
خروجی <T> | خروجی () |
روش های ارثی
روش های عمومی
خروجی عمومی <T> asOutput ()
دسته نمادین یک تانسور را برمیگرداند.
ورودی های عملیات TensorFlow خروجی های عملیات تنسورفلو دیگر هستند. این روش برای به دست آوردن یک دسته نمادین که نشان دهنده محاسبه ورودی است استفاده می شود.
ایجاد فضای ایستا عمومی SpaceToBatchNd <T> ( scope scope، ورودی Operand <T>، Operand <U> blockShape، Operand <V> paddings)
روش کارخانه برای ایجاد کلاسی که یک عملیات SpaceToBatchNd جدید را بسته بندی می کند.
مولفه های
محدوده | محدوده فعلی |
---|---|
ورودی | ND با شکل «input_shape = [batch] + spatial_shape + resting_shape» که در آن spatial_shape ابعاد «M» دارد. |
بلوک شکل | 1-D با شکل «[M]»، همه مقادیر باید >= 1 باشند. |
بالشتک ها | 2-D با شکل «[M, 2]»، همه مقادیر باید >= 0 باشند. «paddings[i] = [pad_start، pad_end]» بالشتک را برای بعد ورودی «i + 1» مشخص میکند که با بعد فضایی مطابقت دارد. "من". لازم است که «block_shape[i]» «input_shape[i + 1] + pad_start + pad_end» را تقسیم کند. |
برمی گرداند
- یک نمونه جدید از SpaceToBatchNd