MatrixSetDiagV3

পাবলিক চূড়ান্ত বর্গ MatrixSetDiagV3

নতুন ব্যাচ করা তির্যক মান সহ একটি ব্যাচ করা ম্যাট্রিক্স টেনসর প্রদান করে।

প্রদত্ত `ইনপুট` এবং `কর্ণ`, এই ক্রিয়াকলাপটি `ইনপুট` এর মতো একই আকৃতি এবং মান সহ একটি টেনসর প্রদান করে, সবচেয়ে ভিতরের ম্যাট্রিক্সের নির্দিষ্ট কর্ণ ব্যতীত। এগুলোকে `কর্ণ`-এর মান দ্বারা ওভাররাইট করা হবে।

`ইনপুট` এর `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))`

আউটপুট হল `[I, J, ..., L, M, N]` মাত্রা সহ `k+1` র‍্যাঙ্কের একটি টেনসর। যদি `k` স্কালে হয় বা` ট [0] == ট [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 = ট [1] - d`, এবং` index_in_diag = n - সর্বোচ্চ(d, 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 (ঘ) = MIN (COLS - সর্বোচ্চ (ঘ, 0), সারি + + মিনিট (ঘ, 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
সারিবদ্ধ (স্ট্রিং সারিবদ্ধ)
আউটপুট <টি>
asOutput ()
একটি টেনসরের প্রতীকী হ্যান্ডেল প্রদান করে।
স্ট্যাটিক <টি> MatrixSetDiagV3 <টি>
তৈরি ( ব্যাপ্তি সুযোগ প্রতীক <টি> ইনপুট, প্রতীক <টি> তির্যক, প্রতীক <integer> K, বিকল্পসমূহ ... অপশন)
একটি নতুন MatrixSetDiagV3 অপারেশন মোড়ানো একটি ক্লাস তৈরি করার কারখানার পদ্ধতি।
আউটপুট <টি>
আউটপুট ()
র্যাঙ্ক `r+1`, `output.shape = input.shape` সহ।

উত্তরাধিকারসূত্রে প্রাপ্ত পদ্ধতি

পাবলিক পদ্ধতি

পাবলিক স্ট্যাটিক MatrixSetDiagV3.Options সারিবদ্ধ (স্ট্রিং সারিবদ্ধ)

পরামিতি
সারিবদ্ধ কিছু কর্ণ `max_diag_len` এর চেয়ে ছোট এবং প্যাড করা দরকার। 'সারিবদ্ধ' হল একটি স্ট্রিং যা সুনির্দিষ্ট করে কিভাবে সুপারডায়গনাল এবং সাবডায়গনাল যথাক্রমে সারিবদ্ধ করা উচিত। চারটি সম্ভাব্য প্রান্তিককরণ রয়েছে: "RIGHT_LEFT" (ডিফল্ট), "LEFT_RIGHT", "LEFT_LEFT", এবং "RIGHT_RIGHT"। "RIGHT_LEFT" সুপারকর্ণকে ডানদিকে সারিবদ্ধ করে (সারিটিকে বাম দিকে প্যাড করে) এবং বামে উপকর্ণগুলিকে (সারিটিকে ডানে প্যাড করে)। এটি প্যাকিং বিন্যাস ল্যাপ্যাক ব্যবহার করে। cuSPARSE "LEFT_RIGHT" ব্যবহার করে, যা বিপরীত প্রান্তিককরণ।

পাবলিক আউটপুট <টি> asOutput ()

একটি টেনসরের প্রতীকী হ্যান্ডেল প্রদান করে।

TensorFlow অপারেশনের ইনপুট হল অন্য TensorFlow অপারেশনের আউটপুট। এই পদ্ধতিটি একটি সিম্বলিক হ্যান্ডেল পেতে ব্যবহৃত হয় যা ইনপুটের গণনার প্রতিনিধিত্ব করে।

পাবলিক স্ট্যাটিক MatrixSetDiagV3 <টি> তৈরি করুন ( ব্যাপ্তি সুযোগ প্রতীক <টি> ইনপুট, প্রতীক <টি> তির্যক, প্রতীক <integer> K, বিকল্পসমূহ ... অপশন)

একটি নতুন MatrixSetDiagV3 অপারেশন মোড়ানো একটি ক্লাস তৈরি করার কারখানার পদ্ধতি।

পরামিতি
সুযোগ বর্তমান সুযোগ
ইনপুট র‍্যাঙ্ক `r+1`, যেখানে `r >= 1`।
তির্যক `k` একটি পূর্ণসংখ্যা বা `k[0] == k[1]` হলে `r` র‍্যাঙ্ক করুন। অন্যথায়, এটির র‍্যাঙ্ক আছে `r+1`। `k >= 1`।
k তির্যক অফসেট(গুলি)। ধনাত্মক মান মানে অতিকর্ণ, 0 প্রধান কর্ণকে বোঝায় এবং ঋণাত্মক মান মানে উপকর্ণ। `k` একটি একক পূর্ণসংখ্যা হতে পারে (একটি একক তির্যকের জন্য) বা একটি ম্যাট্রিক্স ব্যান্ডের নিম্ন এবং উচ্চ প্রান্তগুলি নির্দিষ্ট করে এমন এক জোড়া পূর্ণসংখ্যা হতে পারে৷ `k[0]` অবশ্যই `k[1]` এর চেয়ে বড় হবে না।
বিকল্প ঐচ্ছিক বৈশিষ্ট্য মান বহন করে
রিটার্নস
  • MatrixSetDiagV3 এর একটি নতুন উদাহরণ

পাবলিক আউটপুট <টি> আউটপুট ()

র্যাঙ্ক `r+1`, `output.shape = input.shape` সহ।