یک برش گامدار از «ورودی» برگردانید.
توجه داشته باشید، اکثر کاربران پایتون مایلند به جای این عملیات، از Python Tensor.__getitem__
یا Variable.__getitem__
استفاده کنند.
هدف این عملیات تولید یک تانسور جدید با زیرمجموعهای از عناصر از تانسور «ورودی» «n» بعدی است. زیرمجموعه با استفاده از دنبالهای از مشخصات محدوده پراکنده «m» که در آرگومانهای این تابع کدگذاری شدهاند، انتخاب میشود. توجه داشته باشید، در برخی موارد «m» میتواند برابر با «n» باشد، اما لازم نیست اینطور باشد. هر ورودی مشخصات محدوده می تواند یکی از موارد زیر باشد:
- بیضی (...). بیضی ها برای دلالت بر صفر یا بیشتر ابعاد انتخاب تمام بعدی استفاده می شوند و با استفاده از «بیضی_ماسک» تولید می شوند. به عنوان مثال، "foo[...]" برش هویت است.
- یک محور جدید. این برای درج یک بعد شکل=1 جدید استفاده میشود و با استفاده از "ماسک_محور_جدید" تولید میشود. برای مثال، «foo[:، ...]» که در آن «foo» شکل «(3، 4)» است، یک تانسور «(1، 3، 4)» تولید میکند.
- محدوده «شروع: پایان: گام». این برای تعیین میزان انتخاب از یک بعد معین استفاده می شود. "stride" می تواند هر عدد صحیحی به جز 0 باشد. "begin" یک عدد صحیح است که نمایانگر شاخص اولین مقداری است که باید انتخاب شود در حالی که "end" نمایانگر آخرین مقداری است که باید انتخاب شود. تعداد مقادیر انتخاب شده در هر بعد «پایان - شروع» در صورت «گام > 0» و «شروع - پایان» اگر «گام <0» است. "شروع" و "پایان" می توانند منفی باشند که در آن "-1" آخرین عنصر است، "-2" دومین عنصر به آخرین عنصر است. «begin_mask» کنترل میکند که «شروع» با مقدار مؤثر ضمنی «0» در صورت «گام > 0» و «-1» در صورت «گام <0» جایگزین شود. «end_mask» مشابه است اما عدد مورد نیاز برای ایجاد بزرگترین بازه باز را تولید می کند. به عنوان مثال، با توجه به شکل «(3،)» تانسور «foo[:]»، «شروع» و «پایان» مؤثر «0» و «3» هستند. فرض نکنید که این معادل «foo[0:-1]» است که «شروع» و «پایان» مؤثر «0» و «2» دارد. مثال دیگر «foo[-2::-1]» است که بعد اول یک تانسور را معکوس میکند و در عین حال دو بعدی آخر را حذف میکند (در عناصر ترتیب اصلی). به عنوان مثال `foo = [1,2,3,4]; foo[-2::-1]` «[4،3]» است.
- یک شاخص واحد این فقط برای نگه داشتن عناصری استفاده می شود که دارای یک شاخص معین هستند. به عنوان مثال («foo[2، :]» روی یک شکل «(5،6)» تانسور شکل «(6،)» ایجاد میکند. این تانسور در «شروع» و «پایان» و «ماسک_محور_کوچک شدن» کدگذاری میشود.
هر یک از مشخصات محدوده مفهومی در آرگومان op کد گذاری می شود. این رمزگذاری با در نظر گرفتن یک مثال غیر پیش پا افتاده بهتر قابل درک است. به ویژه، «foo[1، 2:4، هیچ، ...، :-3:-1، :]» به عنوان
begin = [1, 2, x, x, 0, x] # x denotes don't care (usually 0)
end = [2, 4, x, x, -3, x]
strides = [1, 1, x, x, -1, 1]
begin_mask = 1<<4 | 1<<5 = 48
end_mask = 1<<5 = 32
ellipsis_mask = 1<<3 = 8
new_axis_mask = 1<<2 = 4
shrink_axis_mask = 1<<0 = 1
کدگذاری می شود، در این مورد اگر «foo.shape» (5، 5، 5، 5، 5، 5) شکل نهایی برش می شود (2، 1، 5، 5، 2، 5). اجازه دهید گام به گام در هر یک از مشخصات آرگومان قدم برداریم.1. اولین آرگومان در برش مثال به 'begin = 1' و 'end = begin + 1 = 2' تبدیل شده است. برای رفع ابهام از مشخصات اصلی «2:4»، بیت مناسب را نیز در «shrink_axis_mask» تنظیم کردیم.
2. «2:4» 2، 4، 1 به شروع، پایان و گام کمک می کند. همه ماسک ها دارای بیت صفر هستند.
3. هیچ مترادفی برای tf.newaxis
نیست. این به این معنی است که یک بعد اندازه 1 را در شکل نهایی وارد کنید. در حالی که بیت new_axis_mask تنظیم شده است، مقادیر ساختگی برای شروع، پایان و گام ارائه می شود.
4. «...» دامنه های کامل را از ابعاد موردنیاز بگیرید تا به طور کامل یک برش برای هر بعد از شکل ورودی مشخص کنید.
5. `:-3:-1` استفاده از شاخص های منفی را نشان می دهد. یک شاخص منفی «i» مرتبط با بعد که شکل «s» دارد به شاخص مثبت «s + i» تبدیل میشود. بنابراین «-1» تبدیل به «s-1» می شود (یعنی آخرین عنصر). این تبدیل به صورت داخلی انجام میشود، بنابراین شروع، پایان و گامها x، -3 و -1 را دریافت میکنند. بیت start_mask مناسب برای نشان دادن محدوده شروع کامل است (با نادیده گرفتن x) تنظیم شده است.
6. `:` نشان می دهد که کل محتوای بعد مربوطه انتخاب شده است. این معادل «::» یا «0::1» است. شروع، پایان و گام ها به ترتیب 0، 0 و 1 دریافت می کنند. بیت های مناسب در «begin_mask» و «end_mask» نیز تنظیم شده اند.
الزامات : `0 != گامها[i] برای i در [0, m)`` ماسک_بیضی باید توان دو باشد (فقط یک بیضی)`
کلاس های تو در تو
کلاس | StridedSlice.Options | ویژگی های اختیاری برای StridedSlice |
روش های عمومی
خروجی <T> | asOutput () دسته نمادین یک تانسور را برمیگرداند. |
استاتیک StridedSlice.Options | BeginMask (ماسک شروع طولانی) |
static <T, U extensions Number> StridedSlice <T> | |
استاتیک StridedSlice.Options | EllipsisMask ( ماسک بیضی بلند) |
استاتیک StridedSlice.Options | endMask (ماسک پایان طولانی) |
استاتیک StridedSlice.Options | newAxisMask (ماسک جدید جدید AxisMask) |
خروجی <T> | خروجی () |
استاتیک StridedSlice.Options | shrinkAxisMask (Long shrinkAxisMask) |
روش های ارثی
روش های عمومی
خروجی عمومی <T> asOutput ()
دسته نمادین یک تانسور را برمیگرداند.
ورودی های عملیات TensorFlow خروجی های عملیات تنسورفلو دیگر هستند. این روش برای به دست آوردن یک دسته نمادین که نشان دهنده محاسبه ورودی است استفاده می شود.
عمومی استاتیک StridedSlice.Options beginMask (ماسک شروع طولانی)
مولفه های
شروع ماسک | یک بیت ماسک که در آن بیت i 1 به معنای نادیده گرفتن مقدار شروع و در عوض استفاده از بزرگترین فاصله ممکن است. در زمان شروع[i] با «[0, n-1)» جایگزین میشود اگر «stride[i] > 0» یا «[-1، n-1]» اگر «stride[i] <0» |
---|
ایجاد StridedSlice عمومی ایستا <T> ( دامنه دامنه، ورودی عملوند <T>، عملوند <U> شروع، عملوند <U> پایان، عملوند <U> گامها، گزینهها... گزینهها)
روش کارخانه برای ایجاد کلاسی که یک عملیات StridedSlice جدید را بسته بندی می کند.
مولفه های
محدوده | محدوده فعلی |
---|---|
شروع | «begin[k]» تعدیل را در مشخصات محدوده «k» تعیین میکند. بعد دقیقی که با آن مطابقت دارد، بر اساس زمینه تعیین می شود. مقادیر خارج از محدوده بیصدا بسته میشوند. اگر «ک»مین بیت «begin_mask»، «begin[k]» نادیده گرفته میشود و به جای آن از طیف کامل بعد مناسب استفاده میشود. مقادیر منفی باعث می شود که نمایه سازی از بالاترین عنصر شروع شود، به عنوان مثال اگر «foo==[1،2،3]» سپس «foo[-1]==3». |
پایان | «end[i]» مانند «شروع» است با این استثنا که «end_mask» برای تعیین محدوده کامل استفاده میشود. |
گام برداشت | «strides[i]» افزایش در مشخصات «i» را پس از استخراج یک عنصر مشخص میکند. شاخص های منفی ترتیب اولیه را معکوس خواهند کرد. مقادیر خارج از محدوده یا محدوده به «[0, dim[i]) در صورت slice[i]>0» یا «[-1، dim[i]-1] در صورت slice[i] <0» گیره میشوند. |
گزینه ها | مقادیر ویژگی های اختیاری را حمل می کند |
برمی گرداند
- یک نمونه جدید از StridedSlice
عمومی Static StridedSlice.Options ellipsisMask (Long ellipsisMask)
مولفه های
ماسک بیضی | یک بیت ماسک که در آن بیت «i» 1 است به این معنی که موقعیت «i» در واقع یک بیضی است. حداکثر یک بیت میتواند 1 باشد. اگر «ماسک_بیضی == 0»، یک ماسک بیضی ضمنی از «1 << (m+1)» ارائه میشود. این به این معنی است که "foo[3:5] == foo[3:5، ...]". یک بیضی به طور ضمنی به همان اندازه که برای مشخص کردن محدوده برششده برای هر بعد لازم است، مشخصات محدوده ایجاد میکند. برای مثال برای یک تانسور 4 بعدی «foo»، برش «foo[2, ...، 5:8]» به معنای «foo[2, :, :, 5:8]» است. |
---|
عمومی استاتیک StridedSlice.Options newAxisMask (Long newAxisMask)
مولفه های
newAxisMask | یک بیت ماسک که در آن بیت «i» 1 است به این معنی که مشخصات «i» یک بعد شکل 1 جدید ایجاد می کند. برای مثال «foo[:4، tf.newaxis، :2]» یک تانسور شکل «(4، 1، 2)» تولید میکند. |
---|
عمومی استاتیک StridedSlice.Options shrinkAxisMask (Long shrinkAxisMask)
مولفه های
shrinkAxisMask | یک بیت ماسک که در آن بیت «i» نشان میدهد که مشخصات «i» باید ابعاد را کاهش دهد. شروع و پایان باید متضمن برشی به اندازه 1 در بعد باشد. به عنوان مثال در پایتون میتوان «foo[:، 3، :]» را انجام داد که باعث میشود «shrink_axis_mask» 2 باشد. |
---|