MatrixSetDiagV3

الطبقة النهائية العامة MatrixSetDiagV3

إرجاع موتر مصفوفة مجمعة بقيم قطرية مجمعة جديدة.

بالنظر إلى "الإدخال" و"القطري"، تُرجع هذه العملية موترًا له نفس الشكل والقيم مثل "الإدخال"، باستثناء الأقطار المحددة للمصفوفات الأعمق. سيتم استبدالها بالقيم الموجودة في "قطري".

`الإدخال` له أبعاد `r+1` `[I, J, ..., L, M, N]`. عندما يكون `k` عدديًا أو `k[0] == k[1]`، يكون `diagonal` له `r` أبعاد `[I, J, ..., L, max_diag_len]`. بخلاف ذلك، فهو يحتوي على أبعاد `r+1` `[I, J, ..., L, num_diags, max_diag_len]`. `num_diags` هو عدد الأقطار، `num_diags = k[1] - k[0] + 1`. `max_diag_len` هو أطول قطري في النطاق `[k[0], k[1]]`, `max_diag_len = min(M + min(k[1], 0), N + min(-k[0] ، 0))`

الناتج عبارة عن موتر من الرتبة `k+1` بأبعاد `[I, J, ..., L, M, N]`. إذا كان `k` عدديًا أو `k[0] == k[1]`:

output[i, j, ..., l, m, n]
   = diagonal[i, j, ..., l, n-max(k[1], 0)] ; if n - m == k[1]
     input[i, j, ..., l, m, n]              ; otherwise
 
وإلا،
output[i, j, ..., l, m, n]
   = diagonal[i, j, ..., l, diag_index, index_in_diag] ; if k[0] <= d <= k[1]
     input[i, j, ..., l, m, n]                         ; otherwise
 
حيث `d = n - m`، `diag_index = k[1] - d`، و` Index_in_diag = n - max(d, 0) + offset`.

"الإزاحة" هي صفر إلا عندما تكون محاذاة القطر إلى اليمين.

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(d) = min(cols - max(d, 0),rows + min(d, 0))`.

على سبيل المثال:

# The main diagonal.
 input = np.array([[[7, 7, 7, 7],              # Input shape: (2, 3, 4)
                    [7, 7, 7, 7],
                    [7, 7, 7, 7]],
                   [[7, 7, 7, 7],
                    [7, 7, 7, 7],
                    [7, 7, 7, 7]]])
 diagonal = np.array([[1, 2, 3],               # Diagonal shape: (2, 3)
                      [4, 5, 6]])
 tf.matrix_set_diag(input, diagonal)
   ==> [[[1, 7, 7, 7],  # Output shape: (2, 3, 4)
         [7, 2, 7, 7],
         [7, 7, 3, 7]],
        [[4, 7, 7, 7],
         [7, 5, 7, 7],
         [7, 7, 6, 7]]]
 
 # A superdiagonal (per batch).
 tf.matrix_set_diag(input, diagonal, k = 1)
   ==> [[[7, 1, 7, 7],  # Output shape: (2, 3, 4)
         [7, 7, 2, 7],
         [7, 7, 7, 3]],
        [[7, 4, 7, 7],
         [7, 7, 5, 7],
         [7, 7, 7, 6]]]
 
 # A band of diagonals.
 diagonals = np.array([[[0, 9, 1],  # Diagonal shape: (2, 4, 3)
                        [6, 5, 8],
                        [1, 2, 3],
                        [4, 5, 0]],
                       [[0, 1, 2],
                        [5, 6, 4],
                        [6, 1, 2],
                        [3, 4, 0]]])
 tf.matrix_set_diag(input, diagonals, k = (-1, 2))
   ==> [[[1, 6, 9, 7],  # Output shape: (2, 3, 4)
         [4, 2, 5, 1],
         [7, 5, 3, 8]],
        [[6, 5, 1, 7],
         [3, 1, 6, 2],
         [7, 4, 2, 4]]]
 
 # LEFT_RIGHT alignment.
 diagonals = np.array([[[9, 1, 0],  # Diagonal shape: (2, 4, 3)
                        [6, 5, 8],
                        [1, 2, 3],
                        [0, 4, 5]],
                       [[1, 2, 0],
                        [5, 6, 4],
                        [6, 1, 2],
                        [0, 3, 4]]])
 tf.matrix_set_diag(input, diagonals, k = (-1, 2), align="LEFT_RIGHT")
   ==> [[[1, 6, 9, 7],  # Output shape: (2, 3, 4)
         [4, 2, 5, 1],
         [7, 5, 3, 8]],
        [[6, 5, 1, 7],
         [3, 1, 6, 2],
         [7, 4, 2, 4]]]
 
 

فئات متداخلة

فصل MatrixSetDiagV3.Options السمات الاختيارية لـ MatrixSetDiagV3

الأساليب العامة

ثابت MatrixSetDiagV3.Options
محاذاة (محاذاة السلسلة)
الإخراج <T>
كإخراج ()
إرجاع المقبض الرمزي للموتر.
ثابت <T> MatrixSetDiagV3 <T>
إنشاء (نطاق النطاق ، إدخال المعامل <T>، المعامل <T> قطري، المعامل <عدد صحيح> k، خيارات... خيارات)
طريقة المصنع لإنشاء فئة تغلف عملية MatrixSetDiagV3 جديدة.
الإخراج <T>
انتاج ()
رتبة `r+1`، مع `output.shape = input.shape`.

الطرق الموروثة

الأساليب العامة

محاذاة MatrixSetDiagV3.Options الثابتة العامة (محاذاة السلسلة)

حدود
محاذاة بعض الأقطار أقصر من `max_diag_len` وتحتاج إلى الحشو. `align` عبارة عن سلسلة تحدد كيفية محاذاة الأقطار الفائقة والأقطار الفرعية، على التوالي. هناك أربع محاذاة محتملة: "RIGHT_LEFT" (افتراضي)، و"LEFT_RIGHT"، و"LEFT_LEFT"، و"RIGHT_RIGHT". يقوم "RIGHT_LEFT" بمحاذاة الأقطار الفائقة إلى اليمين (وسادات الصف اليسرى) والأقطار الفرعية إلى اليسار (وسادات الصف اليمنى). إنه تنسيق التعبئة الذي يستخدمه LAPACK. يستخدم cuSPARSE "LEFT_RIGHT"، وهو المحاذاة المعاكسة.

الإخراج العام <T> كإخراج ()

إرجاع المقبض الرمزي للموتر.

المدخلات إلى عمليات TensorFlow هي مخرجات عملية TensorFlow أخرى. يتم استخدام هذه الطريقة للحصول على مقبض رمزي يمثل حساب الإدخال.

إنشاء MatrixSetDiagV3 <T> ثابت عام ( نطاق النطاق ، إدخال المعامل <T>، المعامل <T> قطري، المعامل <عدد صحيح> k، خيارات... خيارات)

طريقة المصنع لإنشاء فئة تغلف عملية MatrixSetDiagV3 جديدة.

حدود
نِطَاق النطاق الحالي
مدخل الرتبة `r+1`، حيث `r >= 1`.
قطري رتب `r` عندما يكون `k` عددًا صحيحًا أو `k[0] == k[1]`. وبخلاف ذلك، فقد حصلت على رتبة `r+1`. `ك>= 1`.
ك الإزاحة القطرية. القيمة الموجبة تعني القطر الفائق، 0 تشير إلى القطر الرئيسي، والقيمة السالبة تعني الأقطار الفرعية. يمكن أن يكون `k` عددًا صحيحًا واحدًا (لقطر واحد) أو زوجًا من الأعداد الصحيحة التي تحدد الأطراف المنخفضة والعالية لنطاق المصفوفة. يجب ألا يكون `k[0]` أكبر من `k[1]`.
خيارات يحمل قيم السمات الاختيارية
عائدات
  • مثيل جديد من MatrixSetDiagV3

الإخراج العام <T> الإخراج ()

رتبة `r+1`، مع `output.shape = input.shape`.