How to change the performance function of neural network to mean absolute relative error

Hello,
I know the Matlab NN toolbox has MSE, SSE, MAE and SAE performance functions but would like to implement a custom performance function as:
myperf=mean(abs((t-y)./t));
where t is the target output vector and y is the NN output.
Any thoughts on how can this be implemented?
Thanks in advance.

 Akzeptierte Antwort

Kamuran Turksoy
Kamuran Turksoy am 4 Mai 2017
Bearbeitet: Kamuran Turksoy am 4 Mai 2017
I found my own answer for the performance function myperf = mse(1-y./t) as follows:
net.performFcn='mse'; % this is the default setting
net= train(net,x,t,{},{},1./t); % x is the input matrix.
Note: As pointed out by Greg, t is assumed to have nonzero values.

1 Kommentar

In my view, it should be as follows:
net.performFcn='mse'; % mean suqare error
net= train(net,x,t,{},{},1./t.^2); % 1./t.^2 is the error weight
or
net.performFcn='mae'; % mean absolut error
net= train(net,x,t,{},{},1./t); % 1./t is the error weight

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

You have at least 2 obstacles:
1. When t --> 0
2. abs is not differentiable
If t --> 0 is not a problem try
myperf = mse( 1-y./t);
Hope this helps.
Thank you for formally accepting my answer
Greg

1 Kommentar

In my application t cannot be 0.
I could use myperf = mse(1-y./t) or myperf = mse((t-y)./t).
The question is how to use myperf during the model training?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Deep Learning Toolbox finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by