評價此頁

torch.addr#

torch.addr(input, vec1, vec2, *, beta=1, alpha=1, out=None) Tensor#

執行向量 vec1vec2 的外積,並將其加到矩陣 input 上。

可選值 betaalpha 分別是 vec1vec2 之間的外積以及相加的矩陣 input 的縮放因子。

out=β input+α (vec1vec2)\text{out} = \beta\ \text{input} + \alpha\ (\text{vec1} \otimes \text{vec2})

如果 beta 為 0,則 input 的內容將被忽略,並且其中的 naninf 不會被傳播。

如果 vec1 是大小為 n 的向量,vec2 是大小為 m 的向量,那麼 input 必須可以 廣播 到大小為 (n×m)(n \times m) 的矩陣,並且 out 將是大小為 (n×m)(n \times m) 的矩陣。

引數
  • input (Tensor) – 要新增的矩陣

  • vec1 (Tensor) – 外積的第一個向量

  • vec2 (Tensor) – 外積的第二個向量

關鍵字引數
  • beta (Number, optional) – input 的乘數(β\beta

  • alpha (Number, optional) – vec1vec2\text{vec1} \otimes \text{vec2} 的乘數(α\alpha

  • out (Tensor, optional) – 輸出張量。

示例

>>> vec1 = torch.arange(1., 4.)
>>> vec2 = torch.arange(1., 3.)
>>> M = torch.zeros(3, 2)
>>> torch.addr(M, vec1, vec2)
tensor([[ 1.,  2.],
        [ 2.,  4.],
        [ 3.,  6.]])