প্রদত্ত ব্যাচ করা তির্যক মান সহ একটি ব্যাচড তির্যক টেনসর প্রদান করে।
একটি ম্যাট্রিক্সের `k[0]`-th থেকে `k[1]`-তম কর্ণ হিসাবে `কর্ণ` এর বিষয়বস্তু সহ একটি টেনসর প্রদান করে, বাকি সবকিছু `প্যাডিং` দিয়ে প্যাড করা হয়। `num_rows` এবং `num_cols` আউটপুটের অন্তর্নিহিত ম্যাট্রিক্সের মাত্রা নির্দিষ্ট করে। যদি উভয়টি নির্দিষ্ট করা না থাকে, তাহলে op অনুমান করে যে সবচেয়ে ভিতরের ম্যাট্রিক্সটি বর্গক্ষেত্র এবং `k` থেকে এর আকার এবং `তির্যক` এর ভেতরের মাত্রা অনুমান করে। যদি তাদের মধ্যে শুধুমাত্র একটি নির্দিষ্ট করা হয়, op অনুমান করে যে অনির্দিষ্ট মানটি অন্যান্য মানদণ্ডের উপর ভিত্তি করে সম্ভাব্য সবচেয়ে ছোট।
ধরুন `কর্ণ`-এর `r` মাত্রা আছে `[I, J, ..., L, M, N]`। আউটপুট টেনসরের আকৃতির সাথে `r+1` আছে `[I, J, ..., L, M, num_rows, num_cols]` যখন শুধুমাত্র একটি তির্যক দেওয়া হয় (`k` একটি পূর্ণসংখ্যা বা `k[0] == k[1]`)। অন্যথায়, এটির আকৃতির সাথে `r` আছে `[I, J, ..., L, num_rows, num_cols]`।
`তির্যক` এর দ্বিতীয় অন্তর্নিহিত মাত্রার দ্বিগুণ অর্থ রয়েছে। যখন `k` স্কালে হয় বা` ট [0] == ট [1] `,` m` ব্যাচ আকার [আমি, জে, ..., এম] এর অংশ হওয়ায়, এবং আউটপুট টেন্সর হল:
output[i, j, ..., l, m, n]
= diagonal[i, j, ..., l, n-max(d_upper, 0)] ; if n - m == d_upper
padding_value ; otherwise
( `এম = ট [1] -k [0] 1`) অন্যথায়,` m` একই ব্যাচের মধ্যে ম্যাট্রিক্স জন্য কর্ণ সংখ্যা হিসাবে গণ্য হবে, এবং আউটপুট টেন্সর হল: output[i, j, ..., l, m, n]
= diagonal[i, j, ..., l, diag_index, index_in_diag] ; if k[0] <= d <= k[1]
padding_value ; otherwise
যেখানে `D = n - m`, `diag_index = [k] - 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.
diagonal = np.array([[1, 2, 3, 4], # Input shape: (2, 4)
[5, 6, 7, 8]])
tf.matrix_diag(diagonal) ==> [[[1, 0, 0, 0], # Output shape: (2, 4, 4)
[0, 2, 0, 0],
[0, 0, 3, 0],
[0, 0, 0, 4]],
[[5, 0, 0, 0],
[0, 6, 0, 0],
[0, 0, 7, 0],
[0, 0, 0, 8]]]
# A superdiagonal (per batch).
diagonal = np.array([[1, 2, 3], # Input shape: (2, 3)
[4, 5, 6]])
tf.matrix_diag(diagonal, k = 1)
==> [[[0, 1, 0, 0], # Output shape: (2, 4, 4)
[0, 0, 2, 0],
[0, 0, 0, 3],
[0, 0, 0, 0]],
[[0, 4, 0, 0],
[0, 0, 5, 0],
[0, 0, 0, 6],
[0, 0, 0, 0]]]
# A tridiagonal band (per batch).
diagonals = np.array([[[0, 8, 9], # Input shape: (2, 2, 3)
[1, 2, 3],
[4, 5, 0]],
[[0, 2, 3],
[6, 7, 9],
[9, 1, 0]]])
tf.matrix_diag(diagonals, k = (-1, 1))
==> [[[1, 8, 0], # Output shape: (2, 3, 3)
[4, 2, 9],
[0, 5, 3]],
[[6, 2, 0],
[9, 7, 3],
[0, 1, 9]]]
# LEFT_RIGHT alignment.
diagonals = np.array([[[8, 9, 0], # Input shape: (2, 2, 3)
[1, 2, 3],
[0, 4, 5]],
[[2, 3, 0],
[6, 7, 9],
[0, 9, 1]]])
tf.matrix_diag(diagonals, k = (-1, 1), align="LEFT_RIGHT")
==> [[[1, 8, 0], # Output shape: (2, 3, 3)
[4, 2, 9],
[0, 5, 3]],
[[6, 2, 0],
[9, 7, 3],
[0, 1, 9]]]
# Rectangular matrix.
diagonal = np.array([1, 2]) # Input shape: (2)
tf.matrix_diag(diagonal, k = -1, num_rows = 3, num_cols = 4)
==> [[0, 0, 0, 0], # Output shape: (3, 4)
[1, 0, 0, 0],
[0, 2, 0, 0]]
# Rectangular matrix with inferred num_cols and padding_value = 9.
tf.matrix_diag(diagonal, k = -1, num_rows = 3, padding_value = 9)
==> [[9, 9], # Output shape: (3, 2)
[1, 9],
[9, 2]]
নেস্টেড ক্লাস
ক্লাস | MatrixDiagV3.Options | জন্য ঐচ্ছিক বৈশিষ্ট্য MatrixDiagV3 |
পাবলিক পদ্ধতি
স্ট্যাটিক MatrixDiagV3.Options | সারিবদ্ধ (স্ট্রিং সারিবদ্ধ) |
আউটপুট <টি> | asOutput () একটি টেনসরের প্রতীকী হ্যান্ডেল প্রদান করে। |
স্ট্যাটিক <টি> MatrixDiagV3 <টি> | |
আউটপুট <টি> | আউটপুট () র্যাঙ্ক আছে `r+1` যখন `k` একটি পূর্ণসংখ্যা বা `k[0] == k[1]`, অন্যথায় `r`। |
উত্তরাধিকারসূত্রে প্রাপ্ত পদ্ধতি
পাবলিক পদ্ধতি
পাবলিক স্ট্যাটিক MatrixDiagV3.Options সারিবদ্ধ (স্ট্রিং সারিবদ্ধ)
পরামিতি
সারিবদ্ধ | কিছু কর্ণ `max_diag_len` এর চেয়ে ছোট এবং প্যাড করা দরকার। 'সারিবদ্ধ' হল একটি স্ট্রিং যা সুনির্দিষ্ট করে কিভাবে সুপারডায়গনাল এবং সাবডায়গনাল যথাক্রমে সারিবদ্ধ করা উচিত। চারটি সম্ভাব্য প্রান্তিককরণ রয়েছে: "RIGHT_LEFT" (ডিফল্ট), "LEFT_RIGHT", "LEFT_LEFT", এবং "RIGHT_RIGHT"। "RIGHT_LEFT" সুপারকর্ণকে ডানদিকে সারিবদ্ধ করে (সারিটিকে বাম দিকে প্যাড করে) এবং বামে উপকর্ণগুলিকে (সারিটিকে ডানে প্যাড করে)। এটি প্যাকিং বিন্যাস ল্যাপ্যাক ব্যবহার করে। cuSPARSE "LEFT_RIGHT" ব্যবহার করে, যা বিপরীত প্রান্তিককরণ। |
---|
পাবলিক আউটপুট <টি> asOutput ()
একটি টেনসরের প্রতীকী হ্যান্ডেল প্রদান করে।
TensorFlow অপারেশনের ইনপুট হল অন্য TensorFlow অপারেশনের আউটপুট। এই পদ্ধতিটি একটি সিম্বলিক হ্যান্ডেল পেতে ব্যবহৃত হয় যা ইনপুটের গণনার প্রতিনিধিত্ব করে।
পাবলিক স্ট্যাটিক MatrixDiagV3 <টি> তৈরি করুন ( ব্যাপ্তি সুযোগ প্রতীক <টি> তির্যক, প্রতীক <integer> K, প্রতীক <integer> numRows, প্রতীক <integer> numCols, প্রতীক <টি> paddingValue, বিকল্পসমূহ ... অপশন)
একটি নতুন MatrixDiagV3 অপারেশন মোড়ানো একটি ক্লাস তৈরি করার কারখানার পদ্ধতি।
পরামিতি
সুযোগ | বর্তমান সুযোগ |
---|---|
তির্যক | র্যাঙ্ক `r`, যেখানে `r >= 1` |
k | তির্যক অফসেট(গুলি)। ধনাত্মক মান মানে অতিকর্ণ, 0 প্রধান কর্ণকে বোঝায় এবং ঋণাত্মক মান মানে উপকর্ণ। `k` একটি একক পূর্ণসংখ্যা হতে পারে (একটি একক তির্যকের জন্য) বা একটি ম্যাট্রিক্স ব্যান্ডের নিম্ন এবং উচ্চ প্রান্তগুলি নির্দিষ্ট করে এমন এক জোড়া পূর্ণসংখ্যা হতে পারে৷ `k[0]` অবশ্যই `k[1]` এর চেয়ে বড় হবে না। |
সারি সংখ্যা | আউটপুট ম্যাট্রিক্সের সারির সংখ্যা। যদি এটি প্রদান না করা হয়, op অনুমান করে যে আউটপুট ম্যাট্রিক্স একটি বর্গ ম্যাট্রিক্স এবং k থেকে ম্যাট্রিক্সের আকার এবং `কর্ণ` এর অন্তর্নিহিত মাত্রা অনুমান করে। |
numCols | আউটপুট ম্যাট্রিক্সের কলামের সংখ্যা। যদি এটি প্রদান না করা হয়, op অনুমান করে যে আউটপুট ম্যাট্রিক্স একটি বর্গ ম্যাট্রিক্স এবং k থেকে ম্যাট্রিক্সের আকার এবং `কর্ণ` এর অন্তর্নিহিত মাত্রা অনুমান করে। |
প্যাডিং ভ্যালু | নির্দিষ্ট তির্যক ব্যান্ডের বাইরের এলাকাটি যে সংখ্যা দিয়ে পূরণ করতে হবে। ডিফল্ট 0। |
বিকল্প | ঐচ্ছিক বৈশিষ্ট্য মান বহন করে |
রিটার্নস
- MatrixDiagV3 এর একটি নতুন উদাহরণ
পাবলিক আউটপুট <টি> আউটপুট ()
র্যাঙ্ক আছে `r+1` যখন `k` একটি পূর্ণসংখ্যা বা `k[0] == k[1]`, অন্যথায় `r`।