pigefenleinn.m

来自「采用三层BP神经网络对皮革进行分类 程序包括神经网络的训练和识别」· M 代码 · 共 98 行

M
98
字号
clc
clear
close all

%---------------------------------------------------
% 产生训练样本与测试样本,每一列为一个样本

n1=[ 0.0960  0.3424  0.0000  0.0087  0.0342 
 0.0000  0.3021  0.1283  0.0477  0.0502 
 0.0593  0.3927  0.1742  0.0000  0.0000 
 0.0410  0.5035  0.1375  0.0188  0.0274 
 0.1134  0.6254  0.9248  0.0882  0.1324 
 0.2669  0.5539  0.8735  0.0520  0.1324 
 0.1751  0.6203  1.0000  0.0809  0.1575 
 0.1640  0.6354  0.8552  0.0347  0.0251 
 0.1675  0.5962  0.6453  0.0303  0.0114 
 0.1869  0.7533  0.7131  0.0188  0.1301 
 0.2855  0.6626  0.5573  0.2254  0.1347 
 0.2712  0.8661  0.6884  0.1936  0.1507 
 0.4376  0.8560  0.6627  0.2977  0.3584 
 0.5206  0.8469  0.6150  0.0506  0.3790 
 0.4267  1.0000  0.7003  0.2514  0.2580 
 0.8288  0.7664  0.7406  0.7153  0.4863 
 0.6695  0.7644  0.6719  0.7023  0.4087 
 0.5316  0.5851  0.6425  0.4841  0.3539 
 1.0000  0.0604  0.4216  0.7254  1.0000 
 1.0000  0.0302  0.4125  0.8121  0.5639 
 0.8432  0.0806  0.2933  0.5809  0.3014 
 0.8065  0.0000  0.3300  1.0000  0.8014]';    
x1 = [repmat([1;0;0;0;0],1,4),repmat([0;1;0;0;0],1,4),repmat([0;0;1;0;0],1,4),...
    repmat([0;0;0;1;0],1,6),repmat([0;0;0;0;1],1,4)];

n2=[ 0.0234  0.5122  0.0000  0.0393  0.1549 
 0.0000  0.4738  0.0367  0.0145  0.1127 
 0.1333  0.7823  0.9450  0.0642  0.1643 
 0.0471  0.8464  1.0000  0.0000  0.0000 
 0.1585  0.8182  0.8093  0.0807  0.1737 
 0.2879  0.8169  0.5477  0.3375  0.3897 
 0.2590  1.0000  0.7824  0.0994  0.5634 
 0.6308  0.5339  0.4584  1.0000  1.0000 
 0.8372  0.7465  0.7176  0.9296  0.9061 
 1.0000  0.0000  0.3790  0.7019  0.8826]';
x2 =[repmat([1;0;0;0;0],1,2),repmat([0;1;0;0;0],1,2),repmat([0;0;1;0;0],1,3),...
    repmat([0;0;0;1;0],1,2),repmat([0;0;0;0;1],1,1)];

xn_train = n1;          % 训练样本
dn_train = x1;          % 训练目标

xn_test = n2;           % 测试样本
dn_test = x2;           % 测试目标
%---------------------------------------------------
% 函数接口赋值
NodeNum = 10;           % 隐层节点数 
TypeNum = 5;            % 输出维数
p1 = xn_train;          % 训练输入
t1 = dn_train;          % 训练输出
Epochs = 500;          % 训练次数

P = xn_test;            % 测试输入 
T = dn_test;            % 测试输出(真实值)
%---------------------------------------------------
% 设置网络参数

%TF1 = 'tansig';TF2 = 'purelin'; % 缺省值
%TF1 = 'tansig';TF2 = 'logsig';
%TF1 = 'logsig';TF2 = 'purelin';
TF1 = 'tansig';TF2 = 'tansig';
%TF1 = 'logsig';TF2 = 'logsig';
%TF1 = 'purelin';TF2 = 'purelin';

net = newff(minmax(p1),[NodeNum TypeNum],{TF1 TF2},'traincgb');


% 指定训练参数
%net.trainFcn = 'trainlm';  % 内存使用最多(快)
%net.trainFcn = 'trainbfg';
%net.trainFcn = 'trainrp';  % 内存使用最少(慢)
%net.trainFcn = 'traingda'; % 变学习率
%net.trainFcn = 'traingdx';

net.trainParam.epochs = 500;     % 最大训练次数
net.trainParam.goal = 1e-9;         % 最小均方误差
net.trainParam.min_grad = 1e-20;    % 最小梯度
net.trainParam.show = 200;          % 训练显示间隔
net.trainParam.time = inf;          % 最大训练时间

%---------------------------------------------------
% 训练与测试

net = train(net,p1,t1);             % 训练
X = sim(net,P);                     % 测试 - 输出为预测值
X = full(compet(X))                 % 竞争输出

%---------------------------------------------------
% 结果统计

Result = ~sum(abs(X-x2))               % 正确分类显示为1
Percent = sum(Result)/length(Result)   % 正确分类率

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?