Verilen toplu çapraz değerlerle bir toplu çapraz tensör döndürür.
İçeriği "diyagonal" olarak bir matrisin "k [0]" - "k [1]" arası köşegenleri olan bir tensörü döndürür, diğer her şey "dolgu" ile doldurulur. "satır_sayısı" ve "satır_sayısı", çıktının en içteki matrisinin boyutunu belirtir. Her ikisi de belirtilmezse, işlem en içteki matrisin kare olduğunu varsayar ve boyutunu "k" dan ve "köşegen" in en içteki boyutundan çıkarır. Bunlardan yalnızca biri belirtilirse, operasyon belirlenmemiş 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. Çıktı tensörü, yalnızca bir köşegen verildiğinde ("k" bir tam sayıdır veya "k [0] 'dır)," [I, J, ..., L, M, satır_sayısı, sayı_sayısı] "şeklinde" r + 1 "derecesine sahiptir. == k [1] `). Aksi takdirde, "[I, J, ..., L, satır_sayısı, satır_sayısı]" şeklinde "r" derecesine sahiptir.
"Köşegen" in ikinci en içteki boyutu çift anlama sahiptir. "K" skaler veya "k [0] == k [1]" olduğunda, "M" parti boyutunun [I, J, ..., M] parçasıdır ve çıkış tensörü:
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ı partideki matris için köşegen sayısı olarak kabul edilir ("M = k [1] -k [0] + 1") ve çıkış tensörü: 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`."ofset", köşegenin hizasının sağa doğru olması dışında 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 (cols - max (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]]
Yuvalanmış Sınıflar
sınıf | MatrixDiagV3.Options | MatrixDiagV3 için isteğe bağlı öznitelikler |
Kamu Yöntemleri
statik MatrixDiagV3.Options | hizala (Dize hizala) |
Çıkış <T> | asOutput () Bir tensörün sembolik tutamacını döndürür. |
statik <T> MatrixDiagV3 <T> | oluşturmak ( Kapsam kapsamı, Operand <T> köşegen, Operand <Integer> k, Operand <Integer> numRows, Operand <Integer> numCols, Operand <T> paddingValue, Seçenekler ... seçenekler) Yeni bir MatrixDiagV3 işlemini saran bir sınıf oluşturmak için fabrika yöntemi. |
Çıkış <T> | çıktı () "K" bir tamsayı olduğunda "r + 1" veya "k [0] == k [1]" olduğunda "r" sıralamasına sahiptir. |
Devralınan Yöntemler
Kamu Yöntemleri
public static MatrixDiagV3.Options align (String align)
Parametreler
hizalamak | Bazı köşegenler "max_diag_len" den daha kısadır ve doldurulmaları gerekir. "hizala", sırasıyla süper köşegenlerin ve alt köşegenlerin 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ın sol tarafına) ve alt köşegenleri sola (satırın sağ tarafına) hizalar. LAPACK'in kullandığı paketleme biçimidir. cuSPARSE, ters hizalama olan "LEFT_RIGHT" kullanır. |
---|
public Output <T> asOutput ()
Bir tensörün sembolik tutamacını döndürür.
TensorFlow işlemlerine yönelik girdiler, başka bir TensorFlow işleminin çıktılarıdır. Bu yöntem, girdinin hesaplanmasını temsil eden sembolik bir tutamaç elde etmek için kullanılır.
public static MatrixDiagV3 <T> create ( Scope kapsamı, Operand <T> diyagonal, Operand <Integer> k, Operand <Integer> numRows, Operand <Integer> numCols, Operand <T> paddingValue, Options ... options)
Yeni bir MatrixDiagV3 işlemini saran bir sınıf oluşturmak için fabrika yöntemi.
Parametreler
dürbün | mevcut kapsam |
---|---|
diyagonal | Sıra "r", burada "r> = 1" |
k | Çapraz ofset (ler). Pozitif değer süper diyagonal anlamına gelir, 0 ana köşegen anlamına gelir ve negatif değer alt köşegen anlamına gelir. "k" tek bir tam sayı (tek bir köşegen için) veya bir matris bandının düşük ve yüksek uçlarını belirten bir çift tam sayı olabilir. "k [0]", "k [1]" değerinden büyük olmamalıdır. |
numRows | Çıktı matrisinin satır sayısı. Sağlanmazsa, işlem çıktı matrisinin bir kare matris olduğunu varsayar ve matris boyutunu k'den ve "köşegen" in en içteki boyutundan çıkarır. |
numCols | Çıktı matrisinin sütun sayısı. Sağlanmazsa, işlem çıktı matrisinin bir kare matris olduğunu varsayar ve matris boyutunu k'den ve "köşegen" in en içteki boyutundan çıkarır. |
paddingValue | Belirtilen çapraz bandın dışındaki alanı dolduracak sayı. Varsayılan 0'dır. |
seçenekler | isteğe bağlı öznitelik değerleri taşır |
İadeler
- MatrixDiagV3'ün yeni bir örneği
public Output <T> çıkışı ()
"K" bir tamsayı olduğunda "r + 1" veya "k [0] == k [1]" olduğunda "r" sıralamasına sahiptir.