Pytorch Torch Diagonal_Scatter
# PyTorch torch.diagonal_scatter Function
* * PyTorch torch Reference Manual](#)
`torch.diagonal_scatter` is a PyTorch function used to scatter values to diagonal positions of a tensor. It scatters values from `src` to the specified diagonal of `input`.
### Function Definition
torch.diagonal_scatter(input, src, offset=0, dim1=0, dim2=1)
**Parameters**:
* `input` (Tensor): The input tensor, which is the tensor to be modified.
* `src` (Tensor): The source tensor containing values to scatter to diagonal positions.
* `offset` (int, optional): Diagonal offset. Positive values indicate upper diagonals, negative values indicate lower diagonals, 0 indicates the main diagonal.
* `dim1` (int, optional): First dimension, default is 0.
* `dim2` (int, optional): Second dimension, default is 1.
**Returns**:
* `torch.Tensor`: Returns the modified tensor.
* * *
## Usage Examples
## Example
import torch
# Create input tensor
input= torch.zeros(4,4)
src = torch.tensor([1,2,3,4])
# Scatter values to main diagonal
output = torch.diagonal_scatter(input, src)
print("Input tensor:")
print(input)
print("nSource tensor:")
print(src)
print("nScattered to main diagonal:")
print(output)
Output will be:
Input tensor: tensor([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]])Source tensor: tensor([1, 2, 3, 4])Scattered to main diagonal: tensor([[1., 0., 0., 0.], [0., 2., 0., 0.], [0., 0., 3., 0.], [0., 0., 0., 4.]])
## Example
import torch
# Create input tensor
input= torch.zeros(4,4)
src = torch.tensor([1,2,3])
# Scatter values to upper diagonal (offset=1)
output = torch.diagonal_scatter(input, src, offset=1)
print("Scattered to upper diagonal (offset=1):")
print(output)
# Scatter values to lower diagonal (offset=-1)
output2 = torch.diagonal_scatter(input, src, offset=-1)
print("nScattered to lower diagonal (offset=-1):")
print(output2)
Output will be:
Scattered to upper diagonal (offset=1): tensor([[0., 1., 0., 0.], [0., 0., 2., 0.], [0., 0., 0., 3.], [0., 0., 0., 0.]])Scattered to lower diagonal (offset=-1): tensor([[0., 0., 0., 0.], [1., 0., 0., 0.], [0., 2., 0., 0.], [0., 0., 3., 0.]])
## Example
import torch
# Using diagonal in 3D tensor
input= torch.zeros(3,4,4)
src = torch.tensor([10,20,30])
#
YouTip