晚安,大家,
我想在matlab中使用神经网络拟合下面超链接中图像的曲线(y = exp( - (x-30)。^ 2))。为此,我想使用具有径向基础神经元的feedfoward网络。
我已经写了一段代码,但它无法正常工作,我无法理解原因。
x=[10:0.1:40];
y=exp(-(x-30).^2);
plot(x,y)
nN=[1];
net = feedforwardnet(nN,'traingd');
net.trainParam.epochs=50000;
net.trainParam.lr = 0.01;
net.trainParam.min_grad=0;
net.trainParam.max_fail=15;
net.divideParam.trainRatio = 60/100;
net.divideParam.valRatio = 20/100;
net.divideParam.testRatio = 20/100;
net.layers{1}.transferFcn = 'radbas';
net.layers{2}.transferFcn = 'purelin';
net = configure(net, x, y);
net.iw{1,1}=30;
net.biasConnect=[1; 1];
net.inputConnect=[1; 0];
net.layerConnect=[0 0;1 0];
net.outputConnect=[0 1];
net.inputWeights{1,1}.weightFcn='dist';
net.layers{1}.netInputFcn='netprod';
net.inputWeights{1,1}.learnFcn='learngd';
net.layerWeights{2,1}.learnFcn='learngd';
net.biases{:}.learnFcn='learngd';
[net,tr] = train(net,x,y);
yFinal = net(x);
plot(x,y,'.',x,yFinal,'o')
我使用反向传播训练神经网络。我使用了一个带有一个神经元的隐藏层,传递函数等于radbas,而dist有多重函数。输出层有一个神经元,传递函数等于纯线,权重函数是dotprod。当我使用dotprod如何在隐藏层中输入神经元的权重函数时,网络训练得当。 (图2)
但我需要使用' dist'当我使用dist如何衡量权重时,神经网络不会学习(图3)。如果您输入'help nnweight'你会看到' dist' dist是可能的权重函数之一。我无法理解为什么它不起作用。
有人可以帮助我吗? 非常感谢你。