StridedSlice

halka açık final sınıfı StridedSlice

'Giriş'ten adımlı bir dilim döndürün.

Çoğu Python kullanıcısının doğrudan bu işlem yerine Python Tensor.__getitem__ veya Variable.__getitem__ kullanmak isteyeceğini unutmayın.

Bu operasyonun amacı 'n' boyutlu 'giriş' tensörünün elemanlarının bir alt kümesiyle yeni bir tensör üretmektir. Alt küme, bu fonksiyonun bağımsız değişkenlerine kodlanmış bir dizi 'm' seyrek aralık belirtimi kullanılarak seçilir. Bazı durumlarda 'm'nin 'n'ye eşit olabileceğini ancak durumun böyle olması gerekmediğini unutmayın. Her aralık spesifikasyonu girişi aşağıdakilerden biri olabilir:

- Bir üç nokta (...). Elipsler, tam boyut seçiminin sıfır veya daha fazla boyutunu belirtmek için kullanılır ve "ellipsis_mask" kullanılarak üretilir. Örneğin, 'foo[...]' kimlik dilimidir.

- Yeni bir eksen. Bu, yeni bir şekil=1 boyutu eklemek için kullanılır ve "yeni_eksen_mask" kullanılarak üretilir. Örneğin, 'foo[:, ...]', burada 'foo' şekli '(3, 4)', bir '(1, 3, 4)' tensörü üretir.

- Bir aralık `başlangıç:bitiş:adım`. Bu, belirli bir boyuttan ne kadar seçim yapılacağını belirtmek için kullanılır. "adım" 0 dışında herhangi bir tam sayı olabilir. "başlangıç" seçilecek ilk değerin dizinini temsil eden bir tam sayıdır, "son" ise seçilecek son değerin dizinini temsil eder. Her boyutta seçilen değerlerin sayısı, "adım > 0" ise "bitiş - başlangıç" ve "adım < 0" ise "başlangıç ​​- bitiş"tir. "Başlangıç" ve "bitiş" negatif olabilir; burada "-1" son öğedir, "-2" ise sondan ikinci öğedir. "begin_mask", açıkça verilen "başlangıç" ifadesinin, "adım > 0" ise örtülü etkili bir değer olan "0" ve "adım < 0" ise "-1" ile değiştirilip değiştirilmeyeceğini kontrol eder. 'end_mask' da benzerdir ancak en büyük açık aralığı oluşturmak için gereken sayıyı üretir. Örneğin, bir "(3,)" tensörü "foo[:]" şekli verildiğinde, etkili "başlangıç" ve "bitiş", "0" ve "3"tür. Bunun, etkili bir 'başlangıç' ve 'bitiş'i '0' ve '2' olan 'foo[0:-1]' ile eşdeğer olduğunu varsaymayın. Başka bir örnek ise, tensörün ilk boyutunu tersine çevirip son ikisini (orijinal düzen öğelerinde) bırakan 'foo[-2::-1]'dir. Örneğin 'foo = [1,2,3,4]; foo[-2::-1]', '[4,3]' olur.

- Tek bir dizin. Bu yalnızca belirli bir dizine sahip öğeleri tutmak için kullanılır. Örneğin ('(5,6)' şeklindeki bir tensördeki ('foo[2, :]', bir '(6,)' şekli tensörü üretir. Bu, 'begin' ve 'end' ve 'shrink_axis_mask' ile kodlanır.

Her kavramsal aralık spesifikasyonu operasyonun argümanında kodlanmıştır. Bu kodlama en iyi şekilde önemsiz olmayan bir örnek dikkate alınarak anlaşılır. Özellikle, 'foo[1, 2:4, Yok, ..., :-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&lt;&lt;4 | 1&lt;&lt;5 = 48
 end_mask = 1&lt;&lt;5 = 32
 ellipsis_mask = 1&lt;&lt;3 = 8
 new_axis_mask = 1&lt;&lt;2 = 4
 shrink_axis_mask = 1&lt;&lt;0 = 1
 
olarak kodlanacaktır. Bu durumda eğer 'foo.shape' (5, 5, 5, 5, 5, 5) dilimin son şekli (2, 1, 5, 5, 2, 5) olur. Her argüman spesifikasyonunu adım adım inceleyelim.

1. Örnek dilimdeki ilk argüman "başlangıç ​​= 1" ve "bitiş = başlangıç ​​+ 1 = 2"ye dönüştürülür. Orijinal '2:4' spesifikasyonundan belirsizliği gidermek için aynı zamanda 'shrink_axis_mask'ta uygun biti de ayarladık.

2. '2:4', başlangıca, bitişe ve adıma 2, 4, 1'e katkıda bulunur. Tüm maskelerin katkısı sıfır bittir.

3. Hiçbiri tf.newaxis ile eşanlamlı değildir. Bu, son şekle 1 boyutunda bir boyut eklemek anlamına gelir. new_axis_mask biti ayarlanırken başlangıç, bitiş ve adıma kukla değerler eklenir.

4. `...` giriş şeklinin her boyutu için bir dilimin tam olarak belirtilmesi için gereken sayıda boyuttaki tüm aralıkları yakalayın.

5. `:-3:-1` negatif endekslerin kullanımını gösterir. Şekli "s" olan bir boyutla ilişkilendirilen negatif indeks "i", pozitif indeks "s + i"ye dönüştürülür. Yani '-1', 's-1' (yani son öğe) olur. Bu dönüşüm dahili olarak yapıldığından başlangıç, bitiş ve adımlar x, -3 ve -1'i alır. Uygun begin_mask biti, başlangıç ​​aralığının tam aralık olduğunu gösterecek şekilde ayarlanır (x göz ardı edilir).

6. `:` karşılık gelen boyutun tüm içeriğinin seçildiğini belirtir. Bu, `::` veya `0::1`e eşdeğerdir. başlangıç, bitiş ve adımlar sırasıyla 0, 0 ve 1 alır. 'Begin_mask' ve 'end_mask' içindeki uygun bitler de ayarlanır.

Gereksinimler : `0 != strides[i] for i in [0, m)` `ellipsis_mask ikinin katı olmalıdır (yalnızca bir elips)'

İç İçe Sınıflar

sınıf StridedSlice.Options StridedSlice için isteğe bağlı özellikler

Genel Yöntemler

Çıkış <T>
Çıkış olarak ()
Bir tensörün sembolik tutamacını döndürür.
statik StridedSlice.Options
beginMask (Uzun beginMask)
statik <T, U Sayıyı genişletir> StridedSlice <T>
create ( Kapsam kapsamı, İşlenen <T> girişi, İşlenen <U> başlangıcı, İşlenen <U> sonu, İşlenen <U> adımları, Seçenekler... seçenekler)
Yeni bir StridedSlice işlemini saran bir sınıf oluşturmak için fabrika yöntemi.
statik StridedSlice.Options
elipsMask (Uzun elipsMask)
statik StridedSlice.Options
endMask (Uzun sonMask)
statik StridedSlice.Options
yeniAxisMask (Uzun yeniAxisMask)
Çıkış <T>
statik StridedSlice.Options
küçültmeAxisMask (Uzun küçültmeAxisMask)

Kalıtsal Yöntemler

Genel Yöntemler

genel Çıkış <T> asOutput ()

Bir tensörün sembolik tutamacını döndürür.

TensorFlow işlemlerinin girdileri, başka bir TensorFlow işleminin çıktılarıdır. Bu yöntem, girişin hesaplanmasını temsil eden sembolik bir tanıtıcı elde etmek için kullanılır.

public static StridedSlice.Options beginMask (Uzun beginMask)

Parametreler
başlangıçMaskesi i bitinin 1 olduğu bir bit maskesi, başlangıç ​​değerini yok saymak ve bunun yerine mümkün olan en büyük aralığı kullanmak anlamına gelir. Çalışma zamanında, başlangıç[i], eğer 'adım[i] > 0' ise '[0, n-1)' ile veya 'adım[i] < 0' ise '[-1, n-1]' ile değiştirilecektir.

public static StridedSlice <T> create ( Kapsam kapsamı, İşlenen <T> girişi, İşlenen <U> başlangıcı, İşlenen <U> sonu, İşlenen <U> adımları, Seçenekler... seçenekler)

Yeni bir StridedSlice işlemini saran bir sınıf oluşturmak için fabrika yöntemi.

Parametreler
kapsam mevcut kapsam
başlamak 'başlangıç[k]', 'k'inci aralık spesifikasyonuna göre uzaklığı belirtir. Bunun karşılık geldiği kesin boyut bağlama göre belirlenecektir. Sınırların dışındaki değerler sessizce sıkıştırılacaktır. "Begin_mask"ın "k" biti "begin[k]" göz ardı edilir ve bunun yerine uygun boyutun tam aralığı kullanılır. Negatif değerler indekslemenin en yüksek öğeden başlamasına neden olur; örneğin If `foo==[1,2,3]` sonra `foo[-1]==3`.
son 'end[i]', tam aralıkları belirlemek için 'end_mask' kullanılması dışında 'begin' gibidir.
adımlar "strides[i]", belirli bir öğenin çıkarılmasından sonra "i" spesifikasyonundaki artışı belirtir. Negatif endeksler orijinal sırayı tersine çevirecektir. Out veya aralık değerleri, dilim[i]>0 ise `[0,dim[i])'ye veya dilim[i] < 0 ise `[-1,dim[i]-1]'e sabitlenir
seçenekler isteğe bağlı nitelik değerlerini taşır
İadeler
  • StridedSlice'ın yeni bir örneği

public static StridedSlice.Options ellipsisMask (Uzun elipsMask)

Parametreler
üç noktaMaske 'i' bitinin 1 olması, 'i'inci konumun aslında bir üç nokta olduğu anlamına gelen bir bit maskesi. En fazla bir bit 1 olabilir. Eğer 'ellipsis_mask == 0' ise, '1 << (m+1)' şeklinde örtülü bir üç nokta maskesi sağlanır. Bu, 'foo[3:5] == foo[3:5, ...]' anlamına gelir. Üç nokta, her boyut için dilimlenmiş aralığı tam olarak belirtmek için gereken sayıda aralık belirtimini örtülü olarak oluşturur. Örneğin 4 boyutlu bir tensör 'foo' için 'foo[2, ..., 5:8]' dilimi 'foo[2, :, :, 5:8]' anlamına gelir.

public static StridedSlice.Options endMask (Uzun endMask)

Parametreler
endMask "başlangıç_mask"ına benzer

public static StridedSlice.Options newAxisMask (Uzun newAxisMask)

Parametreler
yeniEksenMaskesi "i" bitinin 1 olması, "i" spesifikasyonunun yeni bir şekil 1 boyutu oluşturduğu anlamına gelen bir bit maskesi. Örneğin 'foo[:4, tf.newaxis, :2]' bir şekil '(4, 1, 2)' tensörü üretecektir.

genel Çıkış <T> çıkışı ()

public static StridedSlice.Options küçültmeAxisMask (Uzun küçültmeAxisMask)

Parametreler
küçültmeAxisMask 'i' bitinin, 'i'inci spesifikasyonun boyutluluğu küçültmesi gerektiğini ima ettiği bir bit maskesi. begin ve end, boyutta 1 boyutunda bir dilim anlamına gelmelidir. Örneğin python'da 'foo[:, 3, :]' yapılabilir, bu da 'shrink_axis_mask'ın 2 olmasına neden olur.