Matlab实现神经网络算法

线性关系可以说是最简单的关系,但在大多数实际问题求解中,线性关系往往不能体现事物之间的复杂关系。而神经网络算法具有非线性关系的逼近能力。在以往所学的算法中,往往是通过得到一个f(x)函数来描述y和x之间的关系的,但神经网络算法是通过层级之间一系列权重来体现关系的。附上一张经典的图。
Matlab实现神经网络算法_第1张图片

算法的原理部分比较复杂,感兴趣的可以自行了解。而通过matlab则极容易建立神经网络模型。这里通过一个小的题目使该算法更容易理解。

根据城市的GDP和人口数(为了简单起见,只选了两个属性)来为中国的城市划分等级,共5级
clc%清屏
P = [3454.32, 432.2, 3243.3, 343,6, 4321,8;
		213.4, 342.4,4325.5,654.3,432.7];
		%输入2*5矩阵,输入层有五个神经元,第一行为GDP,第二行为人口数
		
T = -1:0.5:1 %定义输出,-1,-0.5,0,0.5,1代表城市的五个等级

net = newff(minmax(P),[7,1],{'tansig','purelin'},'trainlm')
%maxmin归一化处理,使输入输出在一个数量级内
%隐藏神经元的数量在一定范围内越大精度越高,一般取输入层神经元个数的两倍
%激活函数
%训练、修正算法

net.trainParam.show = 50 
net.trainParam.lr=0.05 %学习率,取值较小,一般取0.1,0,05,0,01
net.trainParam.epochs=1000%训练的最大次数,停止条件1
net.trainParam.goal=1e-5;%设置精度,误差小于精度,则停止,停止条件2
[net,tr]=train(net,P,T)%开始训练
y = sim(net,[4323.3,7654.6]')%模拟,输入某个城市的GDP和人口数,注意矩阵的转置

你可能感兴趣的:(matlab,算法,神经网络)