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` স্কেলার হয় বা `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 - সর্বোচ্চ(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(d) = min(cols - max(d, 0), সারি + 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>
তৈরি করুন ( স্কোপ স্কোপ, Operand <T> ইনপুট, Operand <T> তির্যক, Operand <Integer> k, বিকল্প... বিকল্প)
একটি নতুন MatrixSetDiagV3 অপারেশন মোড়ানো একটি ক্লাস তৈরি করার কারখানার পদ্ধতি।
আউটপুট <T>
আউটপুট ()
র্যাঙ্ক `r+1`, `output.shape = input.shape` সহ।

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

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

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

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

সর্বজনীন আউটপুট <T> হিসাবে আউটপুট ()

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

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

পাবলিক স্ট্যাটিক MatrixSetDiagV3 <T> তৈরি করুন ( স্কোপ স্কোপ, অপারেন্ড <T> ইনপুট, অপারেন্ড <T> তির্যক, অপারেন্ড <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 এর একটি নতুন উদাহরণ

সর্বজনীন আউটপুট <T> আউটপুট ()

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