یک برش گامدار از «ورودی» برگردانید.
توجه داشته باشید، بیشتر کاربران پایتون مایلند از Python Tensor.__getitem__
یا Variable.__getitem__
به جای این عملیات به طور مستقیم استفاده کنند.
هدف این عملیات تولید یک تانسور جدید با زیرمجموعهای از عناصر از تانسور «ورودی» بعدی «n» است. این زیرمجموعه با استفاده از دنباله ای از مشخصات محدوده پراکنده «m» که در آرگومان های این تابع کدگذاری شده اند، انتخاب می شود. توجه داشته باشید، در برخی موارد «m» میتواند برابر با «n» باشد، اما لازم نیست اینطور باشد. هر ورودی مشخصات محدوده می تواند یکی از موارد زیر باشد:
- بیضی (...). بیضی ها برای نشان دادن ابعاد صفر یا بیشتر از انتخاب تمام بعدی استفاده می شوند و با استفاده از «بیضی_ماسک» تولید می شوند. برای مثال، «فو[...]» برش هویت است.
- یک محور جدید. این برای درج یک بعد شکل=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
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 extends 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] اگر برش[i] <0» بسته میشوند |
گزینه ها | مقادیر ویژگی های اختیاری را حمل می کند |
برمی گرداند
- یک نمونه جدید از StridedSlice
استاتیک عمومی 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 باشد. |
---|