为什么我的神经网络与径向神经元不训练?

时间:2017-01-27 22:37:25

标签: matlab neural-network feed-forward

晚安,大家,

我想在matlab中使用神经网络拟合下面超链接中图像的曲线(y = exp( - (x-30)。^ 2))。为此,我想使用具有径向基础神经元的feedfoward网络。

image

我已经写了一段代码,但它无法正常工作,我无法理解原因。

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)

image 2

但我需要使用' dist'当我使用dist如何衡量权重时,神经网络不会学习(图3)。如果您输入'help nnweight'你会看到' dist' dist是可能的权重函数之一。我无法理解为什么它不起作用。

image 3

有人可以帮助我吗? 非常感谢你。

0 个答案:

没有答案