我想将此函数实现为训练神经网络的错误函数:
function err = MyErrorFunction(T,O)
d = T - O;
err = -d*( exp(-d) - 1 );
end
其中T
是目标值,O
是输入的神经网络输出。
训练算法并不重要(显然trainlm
的错误函数不可自定义,所以我可以使用trainscg
)。
我发现this article建议使用template_performance.m
文件来定义新的效果函数。我说我只是复制这个文件并根据需要自定义它。
显然,从MATLAB 2010开始,template_performance.m
已被弃用。
那么,我如何改变训练神经网络时计算/评估错误/性能的方式?
答案 0 :(得分:2)
我遇到了类似的问题......关于定制性能功能的全部事情都是一场灾难。许多东西正在被折旧,而且我们应做什么没有文档。
我最终不得不破解我不打算使用(SSE)的性能函数的核心文件。在matlab目录MATLAB\R2012b\toolbox\nnet\nnet\nnperformance
下,您可以找到它们。我修改了apply.m(在SSE +文件夹中)函数,其中一些方向权重基于t
,t-1
更改。但后来我遇到了训练算法的问题,该算法以与apply()
不同的方式和格式向perform()
发送参数。我最终没有使用perform()
并为此编写自己的代码。耶稣......一团糟。
这是一个非常难看的黑客,我很乐意听到任何找到正确方法的人。
答案 1 :(得分:1)
根据我的理解,性能函数既用于训练和测试/评估(除非某个训练算法被硬编码到特定函数)