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

#include <array_ops.h>

DepthToSpace برای تانسورهای نوع T.

خلاصه

داده ها را از عمق به بلوک های داده های مکانی بازآرایی می کند. این تبدیل معکوس SpaceToDepth است. به طور خاص، این عملیات یک کپی از تانسور ورودی را که در آن مقادیر از بعد depth در بلوک های فضایی به ابعاد height و width منتقل می شود، خروجی می دهد. attr block_size اندازه بلوک ورودی و نحوه انتقال داده ها را نشان می دهد.

  • تکه‌های داده با اندازه block_size * block_size از عمق به بلوک‌های غیر همپوشانی با اندازه block_size x block_size مرتب می‌شوند.
  • عرض تانسور خروجی input_depth * block_size است، در حالی که ارتفاع input_height * block_size است.
  • مختصات Y، X در هر بلوک از تصویر خروجی توسط جزء مرتبه بالای شاخص کانال ورودی تعیین می شود.
  • عمق تانسور ورودی باید بر block_size * block_size قابل تقسیم باشد.

data_format attr طرح بندی تانسورهای ورودی و خروجی را با گزینه های زیر مشخص می کند: "NHWC": [ batch, height, width, channels ] "NCHW": [ batch, channels, height, width ] "NCHW_VECT_C": qint8 [ batch, channels / 4, height, width, 4 ]

در نظر گرفتن این عملیات به عنوان تبدیل یک تانسور 6 بعدی مفید است. به عنوان مثال برای data_format = NHWC، هر عنصر در تانسور ورودی را می توان از طریق 6 مختصات مشخص کرد، که با کاهش اهمیت چیدمان حافظه به صورت زیر مرتب می شوند: n,iY,iX,bY,bX,oC (که در آن n=شاخص دسته ای، iX, iY به معنی X است. یا مختصات Y در تصویر ورودی، bX، bY به معنای مختصات در بلوک خروجی، oC به معنای کانال های خروجی است. خروجی ورودی خواهد بود که به طرح زیر منتقل می شود: n,iY,bY,iX,bX,oC

این عملیات برای تغییر اندازه فعال‌سازی‌ها بین کانولوشن‌ها (اما حفظ تمام داده‌ها) مفید است، به عنوان مثال به جای ادغام. همچنین برای آموزش مدل های صرفاً کانولوشن مفید است.

برای مثال، با توجه به ورودی شکل [1, 1, 1, 4] ، data_format = "NHWC" و block_size = 2:

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

  


 

This operation will output a tensor of shape [1, 2, 2, 1]:


 


   

 در اینجا، ورودی دارای یک دسته 1 است و هر عنصر دسته دارای شکل [1, 1, 4] است، خروجی مربوطه دارای عناصر 2x2 و عمق 1 کانال خواهد بود (1 = 4 / (block_size * block_size) ). شکل عنصر خروجی [2, 2, 1] است.

برای یک تانسور ورودی با عمق بیشتر، در اینجا شکل [1, 1, 1, 12] ، به عنوان مثال

 این عملیات، برای اندازه بلوک 2، تانسور شکل زیر را برمی گرداند [1, 2, 2, 3]