【发布时间】:2014-08-06 22:22:35
【问题描述】:
我想在我的神经网络中添加一个自定义性能函数以使用小波函数作为性能(我首先使用小波分解信号,然后重构信号并从中计算性能)
我尝试过这里解释的学术方式: http://www.mathworks.fr/support/solutions/en/data/1-1BYOH/index.html?product=NN&solution=1-1BYOH
所以我创建了一个名为 MyPerformanceFunction.m 的 .m 文件并添加:
function perf = MyPerformanceFunction(e, x, pp)
perf = 1;
并将性能函数更改为:
net.performFcn = 'MyPerformanceFunction';
只是为了测试
但我遇到了一个错误:
Error using struct
Conversion to struct from double is not possible.
Error in network/subsasgn>getDefaultParam (line 2023)
param = struct(feval(fcn,'defaultParam'));
Error in network/subsasgn>setPerformFcn (line 1886)
net.performParam = getDefaultParam(performFcn);
Error in network/subsasgn>network_subsasgn (line 445)
if isempty(err), [net,err]=setPerformFcn(net,performFcn); end
Error in network/subsasgn (line 13)
net = network_subsasgn(net,subscripts,v,netname);
Error in nntest3 (line 26)
net.performFcn = 'MyPerformanceFunction';
有人知道它可能来自哪里吗?
我使用 R2013a
谢谢
杰夫
【问题讨论】:
-
我真的不知道它是如何工作的,但似乎 Matlab 并不期望性能函数返回一个双精度值,而是一个结构体。
-
正如安德所说。编译器会准确告诉您问题出在哪里:
struct(feval(fcn,'defaultParam'));以及原因:不能对双精度执行 struct。
标签: matlab neural-network