बैच किए गए टेंसर के बैच किए गए विकर्ण भाग को लौटाता है।
बैच किए गए `इनपुट` के `k[0]`-वें से `k[1]`-वें विकर्णों के साथ एक टेंसर लौटाता है।
मान लें कि `इनपुट` में `r` आयाम हैं [I, J, ..., L, M, N]`। मान लीजिए `max_diag_len` निकाले जाने वाले सभी विकर्णों में से अधिकतम लंबाई है, `max_diag_len = min(M + min(k[1], 0), N + min(-k[0], 0))` num_diags` निकालने के लिए विकर्णों की संख्या हो, `num_diags = k[1] - k[0] + 1`।
यदि `num_diags == 1`, उत्पादन टेन्सर रैंक के` r है - आकार के साथ 1` `[आई, जे, ..., एल, max_diag_len]` और मूल्यों:
diagonal[i, j, ..., l, n]
= input[i, j, ..., l, n+y, n+x] ; if 0 <= n+y < M and 0 <= n+x < N,
padding_value ; otherwise.
जहां `y अधिकतम = (-k [1], 0)`, `एक्स = अधिकतम (के[1], 0)`।अन्यथा, उत्पादन टेन्सर रैंक `आयामों के साथ` [आई, जे, ..., एल, num_diags, max_diag_len] `मूल्यों के साथ r` है:
diagonal[i, j, ..., l, m, n]
= input[i, j, ..., l, n+y, n+x] ; if 0 <= n+y < M and 0 <= n+x < N,
padding_value ; otherwise.
जहां` घ = k [1] - m`, `y = अधिकतम (-डी, 0) - ऑफसेट`, और `एक्स = अधिकतम (डी, 0) - ऑफसेट`।'ऑफ़सेट' शून्य है, सिवाय इसके कि जब विकर्ण का संरेखण दाईं ओर हो।
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
}
जहां `diag_len (घ) = मिनट (कॉलम - अधिकतम (घ, 0), पंक्तियों + मिनट (घ, 0))`।इनपुट कम से कम एक मैट्रिक्स होना चाहिए।
उदाहरण के लिए:
input = np.array([[[1, 2, 3, 4], # Input shape: (2, 3, 4)
[5, 6, 7, 8],
[9, 8, 7, 6]],
[[5, 4, 3, 2],
[1, 2, 3, 4],
[5, 6, 7, 8]]])
# A main diagonal from each batch.
tf.matrix_diag_part(input) ==> [[1, 6, 7], # Output shape: (2, 3)
[5, 2, 7]]
# A superdiagonal from each batch.
tf.matrix_diag_part(input, k = 1)
==> [[2, 7, 6], # Output shape: (2, 3)
[4, 3, 8]]
# A band from each batch.
tf.matrix_diag_part(input, k = (-1, 2))
==> [[[0, 3, 8], # Output shape: (2, 4, 3)
[2, 7, 6],
[1, 6, 7],
[5, 8, 0]],
[[0, 3, 4],
[4, 3, 8],
[5, 2, 7],
[1, 6, 0]]]
# LEFT_RIGHT alignment.
tf.matrix_diag_part(input, k = (-1, 2), align="LEFT_RIGHT")
==> [[[3, 8, 0], # Output shape: (2, 4, 3)
[2, 7, 6],
[1, 6, 7],
[0, 5, 8]],
[[3, 4, 0],
[4, 3, 8],
[5, 2, 7],
[0, 1, 6]]]
# max_diag_len can be shorter than the main diagonal.
tf.matrix_diag_part(input, k = (-2, -1))
==> [[[5, 8],
[9, 0]],
[[1, 6],
[5, 0]]]
# padding_value = 9
tf.matrix_diag_part(input, k = (1, 3), padding_value = 9)
==> [[[9, 9, 4], # Output shape: (2, 3, 3)
[9, 3, 8],
[2, 7, 6]],
[[9, 9, 2],
[9, 3, 4],
[4, 3, 8]]]
नेस्टेड कक्षाएं
कक्षा | MatrixDiagPartV3.Options | के लिए वैकल्पिक विशेषताओं MatrixDiagPartV3 |
सार्वजनिक तरीके
स्थिर MatrixDiagPartV3.Options | संरेखित (स्ट्रिंग संरेखित) |
आउटपुट <टी> | asOutput () टेंसर का प्रतीकात्मक हैंडल लौटाता है। |
स्थिर <टी> MatrixDiagPartV3 <टी> | |
आउटपुट <टी> | विकर्ण () निकाले गए विकर्ण (ओं)। |
विरासत में मिली विधियां
सार्वजनिक तरीके
सार्वजनिक स्थिर MatrixDiagPartV3.Options संरेखित (स्ट्रिंग संरेखित)
मापदंडों
संरेखित | कुछ विकर्ण `max_diag_len` से छोटे होते हैं और उन्हें गद्देदार करने की आवश्यकता होती है। `संरेखण` एक स्ट्रिंग है जो निर्दिष्ट करती है कि क्रमशः सुपरडायगोनल और उप-विकर्ण को कैसे संरेखित किया जाना चाहिए। चार संभावित संरेखण हैं: "RIGHT_LEFT" (डिफ़ॉल्ट), "LEFT_RIGHT", "LEFT_LEFT", और "RIGHT_RIGHT"। "RIGHT_LEFT" सुपरडायगोनल को दाईं ओर संरेखित करता है (पंक्ति को बाएं-पैड करता है) और बाईं ओर उप-विकर्ण (पंक्ति को दाएं-पैड करता है)। यह पैकिंग प्रारूप LAPACK उपयोग करता है। cuSPARSE "LEFT_RIGHT" का उपयोग करता है, जो विपरीत संरेखण है। |
---|
सार्वजनिक आउटपुट <टी> asOutput ()
टेंसर का प्रतीकात्मक हैंडल लौटाता है।
TensorFlow संचालन के लिए इनपुट एक अन्य TensorFlow ऑपरेशन के आउटपुट हैं। इस पद्धति का उपयोग एक प्रतीकात्मक हैंडल प्राप्त करने के लिए किया जाता है जो इनपुट की गणना का प्रतिनिधित्व करता है।
सार्वजनिक स्थिर MatrixDiagPartV3 <टी> बनाने ( स्कोप गुंजाइश, ओपेरैंड <टी> इनपुट, ओपेरैंड <पूर्णांक> कश्मीर, ओपेरैंड <टी> paddingValue, विकल्प ... विकल्प)
एक नया MatrixDiagPartV3 ऑपरेशन रैपिंग क्लास बनाने के लिए फ़ैक्टरी विधि।
मापदंडों
दायरा | वर्तमान दायरा |
---|---|
इनपुट | रैंक `r` टेंसर जहां `r >= 2`। |
क | विकर्ण ऑफसेट (ओं)। धनात्मक मान का अर्थ है सुपरडायगोनल, 0 मुख्य विकर्ण को संदर्भित करता है, और ऋणात्मक मान का अर्थ उप-विकर्ण है। `k` एक एकल पूर्णांक (एकल विकर्ण के लिए) या पूर्णांकों की एक जोड़ी हो सकती है जो मैट्रिक्स बैंड के निम्न और उच्च सिरों को निर्दिष्ट करती है। `के [0]` `के [1]` से बड़ा नहीं होना चाहिए। |
पैडिंगवैल्यू | निर्दिष्ट विकर्ण बैंड के बाहर के क्षेत्र को भरने के लिए मान। डिफ़ॉल्ट 0 है। |
विकल्प | वैकल्पिक विशेषता मान रखता है |
रिटर्न
- MatrixDiagPartV3 का एक नया उदाहरण