# fan_out

## Fan_Out

Bases: nn.Module

A neural network class that splits a given input vector into separate nodes. Each element of the original input vector is allocated a separate node in a computation graph.

Source code in autora/theorist/darts/fan_out.py
  5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 class Fan_Out(nn.Module): """ A neural network class that splits a given input vector into separate nodes. Each element of the original input vector is allocated a separate node in a computation graph. """ def __init__(self, num_inputs: int): """ Initialize the Fan Out operation. Arguments: num_inputs (int): The number of distinct input nodes to generate """ super(Fan_Out, self).__init__() self._num_inputs = num_inputs self.input_output = list() for i in range(num_inputs): linearConnection = nn.Linear(num_inputs, 1, bias=False) linearConnection.weight.data = torch.zeros(1, num_inputs) linearConnection.weight.data[0, i] = 1 linearConnection.weight.requires_grad = False self.input_output.append(linearConnection) def forward(self, input: torch.Tensor) -> torch.Tensor: """ Forward pass of the Fan Out operation. Arguments: input: input vector whose elements are split into separate input nodes """ output = list() for i in range(self._num_inputs): output.append(self.input_output[i](input)) return output 

### __init__(num_inputs)

Initialize the Fan Out operation.

Parameters:

Name Type Description Default
num_inputs int

The number of distinct input nodes to generate

required
Source code in autora/theorist/darts/fan_out.py
 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 def __init__(self, num_inputs: int): """ Initialize the Fan Out operation. Arguments: num_inputs (int): The number of distinct input nodes to generate """ super(Fan_Out, self).__init__() self._num_inputs = num_inputs self.input_output = list() for i in range(num_inputs): linearConnection = nn.Linear(num_inputs, 1, bias=False) linearConnection.weight.data = torch.zeros(1, num_inputs) linearConnection.weight.data[0, i] = 1 linearConnection.weight.requires_grad = False self.input_output.append(linearConnection) 

### forward(input)

Forward pass of the Fan Out operation.

Parameters:

Name Type Description Default
input torch.Tensor

input vector whose elements are split into separate input nodes

required
Source code in autora/theorist/darts/fan_out.py
 30 31 32 33 34 35 36 37 38 39 40 41 42 def forward(self, input: torch.Tensor) -> torch.Tensor: """ Forward pass of the Fan Out operation. Arguments: input: input vector whose elements are split into separate input nodes """ output = list() for i in range(self._num_inputs): output.append(self.input_output[i](input)) return output