0

各位晚安,

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

图片

我写了一个代码,但它不起作用,我不明白为什么。

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)

图 2

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

图 3

有人可以请帮助我吗?太感谢了。

4

0 回答 0