MatrixDiagV3

MatrixDiagV3 ระดับสุดท้ายสาธารณะ

ส่งกลับเทนเซอร์แนวทแยงแบบแบทช์พร้อมค่าแนวทแยงแบบแบทช์ที่กำหนด

ส่งกลับเทนเซอร์ที่มีเนื้อหาอยู่ใน "แนวทแยง" เป็นเส้นทแยงมุม "k[0]`-th ถึง `k[1]`-th ของเมทริกซ์ โดยที่ส่วนที่เหลือทั้งหมดเสริมด้วย "padding" `num_rows` และ `num_cols` ระบุขนาดของเมทริกซ์ที่อยู่ด้านในสุดของเอาต์พุต หากไม่ได้ระบุทั้งสองอย่าง op จะถือว่าเมทริกซ์ด้านในสุดเป็นสี่เหลี่ยมจัตุรัส และอนุมานขนาดจาก `k` และมิติด้านในสุดเป็น 'diagonal' หากมีการระบุเพียงค่าเดียว op จะถือว่าค่าที่ไม่ได้ระบุมีค่าน้อยที่สุดที่เป็นไปได้ตามเกณฑ์อื่นๆ

ให้ `เส้นทแยงมุม` มี `มิติ `[I, J, ..., L, M, N]` เอาท์พุตเทนเซอร์มีอันดับ `r+1` โดยมีรูปร่าง `[I, J, ..., L, M, num_rows, num_cols]` เมื่อให้เส้นทแยงมุมเพียงเส้นเดียว (`k` เป็นจำนวนเต็มหรือ `k[0] == ค[1]`) มิฉะนั้น จะมีอันดับ `r` ที่มีรูปร่าง `[I, J, ..., L, num_rows, num_cols]`

มิติด้านในสุดที่สองของ "เส้นทแยงมุม" มีความหมายสองเท่า เมื่อ `k` เป็นสเกลาร์หรือ `k[0] == k[1]` `M` จะเป็นส่วนหนึ่งของขนาดแบตช์ [I, J, ..., M] และเทนเซอร์เอาท์พุตคือ:

output[i, j, ..., l, m, n]
   = diagonal[i, j, ..., l, n-max(d_upper, 0)] ; if n - m == d_upper
     padding_value                             ; otherwise
 
มิฉะนั้น `M` จะถือว่าเป็นจำนวนเส้นทแยงมุมสำหรับเมทริกซ์ในชุดเดียวกัน (`M = k[1]-k[0]+1`) และเทนเซอร์เอาท์พุตจะเป็น:
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 - 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), row + min(d, 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.ตัวเลือก คุณลักษณะทางเลือกสำหรับ MatrixDiagV3

ค่าคงที่

สตริง OP_NAME ชื่อของ op นี้ ซึ่งรู้จักกันในชื่อของเอ็นจิ้นหลัก TensorFlow

วิธีการสาธารณะ

MatrixDiagV3.Options แบบคงที่
จัดตำแหน่ง (จัดตำแหน่งสตริง)
เอาท์พุต <T>
เป็นเอาท์พุต ()
ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์
คงที่ <T ขยาย TType > MatrixDiagV3 <T>
สร้าง (ขอบเขต ขอบเขต ตัว ดำเนินการ <T> เส้นทแยงมุม ตัวดำเนินการ < TInt32 > k, ตัวดำเนินการ < TInt32 > numRows, ตัวดำเนินการ < TInt32 > numCols, ตัวดำเนินการ <T> paddingValue, ตัวเลือก... ตัวเลือก)
วิธีการจากโรงงานเพื่อสร้างคลาสที่ห่อการดำเนินการ MatrixDiagV3 ใหม่
เอาท์พุต <T>
เอาท์พุท ()
มีอันดับ `r+1` เมื่อ `k` เป็นจำนวนเต็มหรือ `k[0] == k[1]` ให้จัดอันดับ `r` มิฉะนั้น

วิธีการสืบทอด

ค่าคงที่

สตริงสุดท้ายแบบคงที่สาธารณะ OP_NAME

ชื่อของ op นี้ ซึ่งรู้จักกันในชื่อของเอ็นจิ้นหลัก TensorFlow

ค่าคงที่: "MatrixDiagV3"

วิธีการสาธารณะ

การจัดตำแหน่ง MatrixDiagV3.Options สาธารณะแบบคงที่ (การจัดตำแหน่งสตริง)

พารามิเตอร์
จัดตำแหน่ง เส้นทแยงมุมบางเส้นสั้นกว่า `max_diag_len` และจำเป็นต้องเสริมด้วย `align` คือสตริงที่ระบุว่าควรจัดแนว superdiagonals และ subdiagonals อย่างไรตามลำดับ มีการจัดแนวที่เป็นไปได้สี่แบบ: "RIGHT_LEFT" (ค่าเริ่มต้น), "LEFT_RIGHT", "LEFT_LEFT" และ "RIGHT_RIGHT" "RIGHT_LEFT" จัดแนวเหนือเส้นทแยงมุมไปทางขวา (วางด้านซ้ายบนแถว) และเส้นทแยงมุมย่อยไปทางซ้าย (วางด้านขวาบนแถว) เป็นรูปแบบการบรรจุที่ LAPACK ใช้ cuSPARSE ใช้ "LEFT_RIGHT" ซึ่งเป็นการจัดตำแหน่งที่ตรงกันข้าม

เอาท์พุท สาธารณะ <T> asOutput ()

ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์

อินพุตสำหรับการดำเนินการ TensorFlow คือเอาต์พุตของการดำเนินการ TensorFlow อื่น วิธีการนี้ใช้เพื่อรับหมายเลขอ้างอิงสัญลักษณ์ที่แสดงถึงการคำนวณอินพุต

สร้าง MatrixDiagV3 <T> สาธารณะแบบคงที่ (ขอบเขตขอบเขต ตัว ดำเนินการ <T> เส้นทแยงมุม ตัวดำเนินการ < TInt32 > k, ตัวดำเนินการ < TInt32 > numRows, ตัวดำเนินการ < TInt32 > numCols, ตัวดำเนินการ <T> paddingValue, ตัวเลือก... ตัวเลือก)

วิธีการจากโรงงานเพื่อสร้างคลาสที่ห่อการดำเนินการ MatrixDiagV3 ใหม่

พารามิเตอร์
ขอบเขต ขอบเขตปัจจุบัน
เส้นทแยงมุม อันดับ `r` โดยที่ `r >= 1`
เค ออฟเซ็ตแนวทแยง ค่าบวกหมายถึงเส้นทแยงมุมเหนือ, 0 หมายถึงเส้นทแยงมุมหลัก และค่าลบหมายถึงเส้นทแยงมุมย่อย `k` อาจเป็นจำนวนเต็มเดี่ยว (สำหรับเส้นทแยงมุมเดียว) หรือจำนวนเต็มคู่ที่ระบุจุดต่ำสุดและสูงของแถบเมทริกซ์ `k[0]` ต้องไม่ใหญ่กว่า `k[1]`
numRows จำนวนแถวของเมทริกซ์เอาต์พุต หากไม่ได้ระบุไว้ op จะถือว่าเมทริกซ์เอาต์พุตเป็นเมทริกซ์จัตุรัสและอนุมานขนาดเมทริกซ์จาก k และมิติด้านในสุดของ "เส้นทแยงมุม"
numCols จำนวนคอลัมน์ของเมทริกซ์เอาต์พุต หากไม่ได้ระบุไว้ op จะถือว่าเมทริกซ์เอาต์พุตเป็นเมทริกซ์จัตุรัสและอนุมานขนาดเมทริกซ์จาก k และมิติด้านในสุดของ "เส้นทแยงมุม"
ค่าช่องว่างภายใน ตัวเลขที่ใช้เติมพื้นที่นอกแถบแนวทแยงที่ระบุ ค่าเริ่มต้นคือ 0
ตัวเลือก มีค่าแอตทริบิวต์ทางเลือก
การส่งคืน
  • ตัวอย่างใหม่ของ MatrixDiagV3

เอาท์พุท สาธารณะ <T> เอาท์พุท ()

มีอันดับ `r+1` เมื่อ `k` เป็นจำนวนเต็มหรือ `k[0] == k[1]` ให้จัดอันดับ `r` มิฉะนั้น