如何自定义MATLAB神经网络的误差函数

时间:2011-08-21 18:22:47

标签: matlab customization neural-network

我想将此函数实现为训练神经网络的错误函数:

function err = MyErrorFunction(T,O)
  d = T - O;
  err = -d*( exp(-d) - 1 );
end

其中T是目标值,O是输入的神经网络输出。

训练算法并不重要(显然trainlm的错误函数不可自定义,所以我可以使用trainscg)。

我发现this article建议使用template_performance.m文件来定义新的效果函数。我说我只是复制这个文件并根据需要自定义它。

<德尔> 但正如我所理解的那样,`template_performance.m`是** performance **函数的模板,而不是** error **函数:`template_performance.m`获取错误值并输出性能值,例如它可以总结错误的平方并输出它们(SSE)。

显然,从MATLAB 2010开始,template_performance.m已被弃用。

那么,我如何改变训练神经网络时计算/评估错误/性能的方式?

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题......关于定制性能功能的全部事情都是一场灾难。许多东西正在被折旧,而且我们做什么没有文档。

我最终不得不破解我不打算使用(SSE)的性能函数的核心文件。在matlab目录MATLAB\R2012b\toolbox\nnet\nnet\nnperformance下,您可以找到它们。我修改了apply.m(在SSE +文件夹中)函数,其中一些方向权重基于tt-1更改。但后来我遇到了训练算法的问题,该算法以与apply()不同的方式和格式向perform()发送参数。我最终没有使用perform()并为此编写自己的代码。耶稣......一团糟。

这是一个非常难看的黑客,我很乐意听到任何找到正确方法的人。

答案 1 :(得分:1)

根据我的理解,性能函数既用于训练和测试/评估(除非某个训练算法被硬编码到特定函数)