# Weight initialisation and Backpropagation modification

My model is used to predict values based on an minimising a loss function L. But, the loss function doesn’t have a single global minima value, but rather a large number of places where it achieves global minima.

So, the model is based like this:

1. Model Input is [nXn] tensor (let’s say: `inp=[ [i_11, i_12, i_13, ..., i_1n],[i_21, i_22, ..., i_2n],...,[i_n1,i_n2, ..., i_nn] ]`) and model output is [nX1] tensor (let’s say: `out1=[o_1, o_2,..., o_n ]`)

2. Output tensor is `out1` is passed in a function f to get `out2` (let’s say: `f(o_1, o_2, o_3,..., o_n)=[O_1, O_2, O_3, ..., O_n] `)

3. These 2 values (i.e., `out1` and `out2`) are minimised using MSELoss i.e., `Loss = ||out1 - out2||`

Now, there are a lot of values for `[o_1, o_2, ..., o_n]` for which the `Loss` goes to minimum.

But, I want the values of `[o_1, o_2, ..., o_n]` for which `|o_1| + |o_2| + |o_3| + ... + |o_n|` is maximum

Right now, the weights are initialised randomly:
`self.weight = torch.nn.parameter.Parameter(torch.FloatTensor(`in_features`, out_features))` for some value of `in_features` and `out_features`

But by doing this, I am getting the values of `[o_1, o_2, ..., o_n]` for which `|o_1| + |o_2| + |o_3| + ... + |o_n|` is minimum.

I know this problem can be solved by without using deep-learning, but I am trying to get the results like this for some task computation.

Is there a way to change this to get the largest values predicted at the output of the neural net?

Or is there any other technique (backpropagation change) to change it to get the desired largest valued output?