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:
-
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 ]
) -
Output tensor is
out1
is passed in a function f to getout2
(let’s say:f(o_1, o_2, o_3,..., o_n)=[O_1, O_2, O_3, ..., O_n]
) -
These 2 values (i.e.,
out1
andout2
) 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?
Thanks in advance.