MatrixSetDiag

الفئة النهائية العامة MatrixSetDiag

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

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

`الإدخال` له أبعاد `r+1` `[I, J, ..., L, M, N]`. عندما يكون `k` عدديًا أو `k[0] == k[1]`، فإن `القطري` له `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]]]
 
 

فئات متداخلة

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

الثوابت

خيط OP_NAME اسم هذه العملية كما هو معروف بواسطة محرك TensorFlow الأساسي

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

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

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

الثوابت

السلسلة النهائية الثابتة العامة OP_NAME

اسم هذه العملية كما هو معروف بواسطة محرك TensorFlow الأساسي

القيمة الثابتة: "MatrixSetDiagV3"

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

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

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

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

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

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

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

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

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

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

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