評價此頁

torch.diag_embed#

torch.diag_embed(input, offset=0, dim1=-2, dim2=-1) Tensor#

建立這樣一個張量,其特定二維平面的對角線(由 dim1dim2 指定)由 input 填充。為了方便建立批次的對角矩陣,預設選擇返回張量最後兩個維度形成的二維平面。

引數 offset 控制要考慮的對角線

  • 如果 offset = 0,則為主對角線。

  • 如果 offset > 0,則位於主對角線之上。

  • 如果 offset < 0,則位於主對角線之下。

新矩陣的大小將計算為使指定對角線的大小等於最後一個輸入維度的大小。請注意,對於 offset 不為 00 的情況,dim1dim2 的順序很重要。交換它們等同於改變 offset 的符號。

將此函式輸出應用於 torch.diagonal()(使用相同的引數)會得到一個與輸入相同的矩陣。但是,torch.diagonal() 具有不同的預設維度,因此需要顯式指定它們。

引數
  • input (Tensor) – 輸入張量。必須至少為一維。

  • offset (int, optional) – 要考慮的對角線。預設值:0(主對角線)。

  • dim1 (int, optional) – 取對角線的第一個維度。預設為 -2。

  • dim2 (int, optional) – 取對角線的第二個維度。預設為 -1。

示例

>>> a = torch.randn(2, 3)
>>> torch.diag_embed(a)
tensor([[[ 1.5410,  0.0000,  0.0000],
         [ 0.0000, -0.2934,  0.0000],
         [ 0.0000,  0.0000, -2.1788]],

        [[ 0.5684,  0.0000,  0.0000],
         [ 0.0000, -1.0845,  0.0000],
         [ 0.0000,  0.0000, -1.3986]]])

>>> torch.diag_embed(a, offset=1, dim1=0, dim2=2)
tensor([[[ 0.0000,  1.5410,  0.0000,  0.0000],
         [ 0.0000,  0.5684,  0.0000,  0.0000]],

        [[ 0.0000,  0.0000, -0.2934,  0.0000],
         [ 0.0000,  0.0000, -1.0845,  0.0000]],

        [[ 0.0000,  0.0000,  0.0000, -2.1788],
         [ 0.0000,  0.0000,  0.0000, -1.3986]],

        [[ 0.0000,  0.0000,  0.0000,  0.0000],
         [ 0.0000,  0.0000,  0.0000,  0.0000]]])