'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, :]' şu şekilde kodlanacaktır:
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. Ö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şlamaya, bitirmeye ve ilerlemeye 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. `:` ilgili 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 (sadece 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> | |
statik StridedSlice.Options | elipsMask (Uzun elipsMask) |
statik StridedSlice.Options | endMask (Uzun sonMask) |
statik StridedSlice.Options | yeniAxisMask (Uzun yeniAxisMask) |
Çıkış <T> | çıktı () |
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 |
İade
- 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ıç_maskesi"ne 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. |
---|
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. başlangıç ve bitiş, 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. |
---|