SpaceToBatch برای تانسورهای ND از نوع T.
این عملیات، ابعاد «مکانی» «[1، ...، M]» ورودی را به شبکهای از بلوکهای شکل «شکل_بلوک» تقسیم میکند و این بلوکها را با بعد «دستهای» (0) بهطوری که در خروجی ، ابعاد فضایی «[1، ...، M]» با موقعیت درون شبکه مطابقت دارد، و بعد دسته ای هم موقعیت درون یک بلوک فضایی و هم موقعیت دسته ای اصلی را ترکیب می کند. قبل از تقسیم به بلوکها، ابعاد فضایی ورودی بهصورت اختیاری بر اساس «پردهها» صفر میشود. برای توضیحات دقیق به زیر مراجعه کنید.
این عملیات معادل مراحل زیر است:
1. ابتدا و انتهای ابعاد «[1، ...، M]» ورودی را با توجه به «بالشتکها» صفر کنید تا «پردهشده» به شکل «شکل_بالشتکی» تولید شود.
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 = [2، 2]» و «بالشتک ها = [[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 + باقیمانده_شکل"، که در آن 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