torch.diag_embed#
- torch.diag_embed(input, offset=0, dim1=-2, dim2=-1) Tensor#
建立這樣一個張量,其特定二維平面的對角線(由
dim1和dim2指定)由input填充。為了方便建立批次的對角矩陣,預設選擇返回張量最後兩個維度形成的二維平面。引數
offset控制要考慮的對角線如果
offset= 0,則為主對角線。如果
offset> 0,則位於主對角線之上。如果
offset< 0,則位於主對角線之下。
新矩陣的大小將計算為使指定對角線的大小等於最後一個輸入維度的大小。請注意,對於
offset不為 的情況,dim1和dim2的順序很重要。交換它們等同於改變offset的符號。將此函式輸出應用於
torch.diagonal()(使用相同的引數)會得到一個與輸入相同的矩陣。但是,torch.diagonal()具有不同的預設維度,因此需要顯式指定它們。- 引數
示例
>>> 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]]])