MatrixDiagV3

genel final sınıfı MatrixDiagV3

Verilen toplu çapraz değerlere sahip toplu bir çapraz tensör döndürür.

Bir matrisin "k[0]" ile "k[1]'inci arası köşegenleri" olarak "diagonal" içerikli bir tensör döndürür ve geri kalan her şey "padding" ile doldurulur. "satır_sayısı" ve "sütun_sayısı" çıktının en içteki matrisinin boyutunu belirtir. Her ikisi de belirtilmezse, op, en içteki matrisin kare olduğunu varsayar ve boyutunu "k"den ve en içteki "köşegen" boyutundan çıkarır. Bunlardan yalnızca biri belirtilirse, op belirtilmemiş değerin diğer kriterlere göre mümkün olan en küçük değer olduğunu varsayar.

'Köşegen'in 'r' boyutları '[I, J, ..., L, M, N]' olsun. Çıkış tensörü, yalnızca bir köşegen verildiğinde ('k' bir tamsayı veya 'k[0]'dır) '[I, J, ..., L, M, sayı_satırlar, sayı_sütunlar]' şeklinde 'r+1' derecesine sahiptir. == k[1]`). Aksi takdirde, "[I, J, ..., L, satır_sayısı, sütun_sayısı]" şeklinde "r" sıralamasına sahiptir.

'Köşegen'in en içteki ikinci boyutu çift anlamlıdır. 'k' skaler veya 'k[0] == k[1]' olduğunda, 'M' parti boyutunun [I, J, ..., M] bir parçasıdır ve çıkış tensörü şöyledir:

output[i, j, ..., l, m, n]
   = diagonal[i, j, ..., l, n-max(d_upper, 0)] ; if n - m == d_upper
     padding_value                             ; otherwise
 
Aksi takdirde, 'M' aynı gruptaki matrisin köşegen sayısı olarak kabul edilir ('M = k[1]-k[0]+1') ve çıkış tensörü şöyledir:
output[i, j, ..., l, m, n]
   = diagonal[i, j, ..., l, diag_index, index_in_diag] ; if k[0] <= d <= k[1]
     padding_value                                     ; otherwise
 
burada 'd = n - m', 'diag_index = [k] - d' ve 'index_in_diag = n - max(d, 0) + offset'.

Köşegen hizalamasının sağa doğru olması dışında "ofset" sıfırdır.

offset = max_diag_len - diag_len(d) ; if (`align` in {RIGHT_LEFT, RIGHT_RIGHT
                                            and `d >= 0`) or
                                          (`align` in {LEFT_RIGHT, RIGHT_RIGHT}
                                            and `d <= 0`)
          0                          ; otherwise
 }
burada 'diag_len(d) = min(sütunlar - maks(d, 0), satırlar + min(d, 0))'.

Örneğin:

# The main diagonal.
 diagonal = np.array([[1, 2, 3, 4],            # Input shape: (2, 4)
                      [5, 6, 7, 8]])
 tf.matrix_diag(diagonal) ==> [[[1, 0, 0, 0],  # Output shape: (2, 4, 4)
                                [0, 2, 0, 0],
                                [0, 0, 3, 0],
                                [0, 0, 0, 4]],
                               [[5, 0, 0, 0],
                                [0, 6, 0, 0],
                                [0, 0, 7, 0],
                                [0, 0, 0, 8]]]
 
 # A superdiagonal (per batch).
 diagonal = np.array([[1, 2, 3],  # Input shape: (2, 3)
                      [4, 5, 6]])
 tf.matrix_diag(diagonal, k = 1)
   ==> [[[0, 1, 0, 0],  # Output shape: (2, 4, 4)
         [0, 0, 2, 0],
         [0, 0, 0, 3],
         [0, 0, 0, 0]],
        [[0, 4, 0, 0],
         [0, 0, 5, 0],
         [0, 0, 0, 6],
         [0, 0, 0, 0]]]
 
 # A tridiagonal band (per batch).
 diagonals = np.array([[[0, 8, 9],  # Input shape: (2, 2, 3)
                        [1, 2, 3],
                        [4, 5, 0]],
                       [[0, 2, 3],
                        [6, 7, 9],
                        [9, 1, 0]]])
 tf.matrix_diag(diagonals, k = (-1, 1))
   ==> [[[1, 8, 0],  # Output shape: (2, 3, 3)
         [4, 2, 9],
         [0, 5, 3]],
        [[6, 2, 0],
         [9, 7, 3],
         [0, 1, 9]]]
 
 # LEFT_RIGHT alignment.
 diagonals = np.array([[[8, 9, 0],  # Input shape: (2, 2, 3)
                        [1, 2, 3],
                        [0, 4, 5]],
                       [[2, 3, 0],
                        [6, 7, 9],
                        [0, 9, 1]]])
 tf.matrix_diag(diagonals, k = (-1, 1), align="LEFT_RIGHT")
   ==> [[[1, 8, 0],  # Output shape: (2, 3, 3)
         [4, 2, 9],
         [0, 5, 3]],
        [[6, 2, 0],
         [9, 7, 3],
         [0, 1, 9]]]
 
 # Rectangular matrix.
 diagonal = np.array([1, 2])  # Input shape: (2)
 tf.matrix_diag(diagonal, k = -1, num_rows = 3, num_cols = 4)
   ==> [[0, 0, 0, 0],  # Output shape: (3, 4)
        [1, 0, 0, 0],
        [0, 2, 0, 0]]
 
 # Rectangular matrix with inferred num_cols and padding_value = 9.
 tf.matrix_diag(diagonal, k = -1, num_rows = 3, padding_value = 9)
   ==> [[9, 9],  # Output shape: (3, 2)
        [1, 9],
        [9, 2]]
 
 

İç İçe Sınıflar

sınıf MatrixDiagV3.Seçenekler MatrixDiagV3 için isteğe bağlı özellikler

Sabitler

Sicim OP_NAME Bu operasyonun TensorFlow çekirdek motoru tarafından bilinen adı

Genel Yöntemler

statik MatrixDiagV3.Options
hizala (Dize hizala)
Çıkış <T>
Çıkış olarak ()
Tensörün sembolik tutamacını döndürür.
statik <T TType'ı genişletir > MatrixDiagV3 <T>
create ( Kapsam kapsamı, İşlenen <T> çapraz, İşlenen < TInt32 > k, İşlenen < TInt32 > numRows, İşlenen < TInt32 > numCols, İşlenen <T> paddingValue, Seçenekler... seçenekler)
Yeni bir MatrixDiagV3 işlemini saran bir sınıf oluşturmaya yönelik fabrika yöntemi.
Çıkış <T>
çıktı ()
"k" bir tamsayı olduğunda veya "k[0] == k[1]" olduğunda "r+1" derecesine sahiptir, aksi takdirde "r" derecesine sahiptir.

Kalıtsal Yöntemler

Sabitler

genel statik son Dize OP_NAME

Bu operasyonun TensorFlow çekirdek motoru tarafından bilinen adı

Sabit Değer: "MatrixDiagV3"

Genel Yöntemler

public static MatrixDiagV3.Options hizalama (Dize hizalama)

Parametreler
hizalamak Bazı köşegenler "max_diag_len"den daha kısadır ve doldurulmaları gerekir. `align', süper köşegenlerin ve alt köşegenlerin sırasıyla nasıl hizalanması gerektiğini belirten bir dizedir. Dört olası hizalama vardır: "RIGHT_LEFT" (varsayılan), "LEFT_RIGHT", "LEFT_LEFT" ve "RIGHT_RIGHT". "RIGHT_LEFT" süper köşegenleri sağa (satırı sola doldurur) ve alt köşegenleri sola (satırı sağa doldurur) hizalar. LAPACK'in kullandığı paketleme formatıdır. cuSPARSE, ters hizalama olan "LEFT_RIGHT"ı kullanır.

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

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 MatrixDiagV3 <T> create ( Kapsam kapsamı, İşlenen <T> diyagonal, İşlenen < TInt32 > k, İşlenen < TInt32 > numRows, İşlenen < TInt32 > numCols, İşlenen <T> paddingValue, Seçenekler... seçenekler)

Yeni bir MatrixDiagV3 işlemini saran bir sınıf oluşturmaya yönelik fabrika yöntemi.

Parametreler
kapsam mevcut kapsam
diyagonal Sıra "r", burada "r >= 1"
k Çapraz uzaklık(lar). Pozitif değer süper köşegeni, 0 ana köşegeni, negatif değer ise alt köşegenleri ifade eder. 'k' tek bir tam sayı (tek bir köşegen için) veya bir matris bandının alt ve üst uçlarını belirten bir çift tam sayı olabilir. "k[0]", "k[1]"den büyük olmamalıdır.
numRows Çıkış matrisinin satır sayısı. Sağlanmamışsa, op, çıktı matrisinin bir kare matris olduğunu varsayar ve matris boyutunu k'den ve "köşegen"in en içteki boyutundan çıkarır.
numCols Çıkış matrisinin sütun sayısı. Sağlanmamışsa, op, çıktı matrisinin bir kare matris olduğunu varsayar ve matris boyutunu k'den ve "köşegen"in en içteki boyutundan çıkarır.
dolgu Değeri Belirtilen diyagonal bandın dışındaki alanı dolduracak sayı. Varsayılan 0'dır.
seçenekler isteğe bağlı nitelik değerlerini taşır
İade
  • MatrixDiagV3'ün yeni bir örneği

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

"k" bir tam sayı olduğunda veya "k[0] == k[1]" olduğunda "r+1" derecesine sahiptir, aksi halde "r" derecesine sahiptir.