matlab+BP神经网络 手写体数字识别训练程序(含训练数据)。
包含5000张手写字数字图片(20x20像素),以及matlab训练程序。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-05 12:47 手写体数字识别训练程序
文件 3223 2018-12-31 15:04 手写体数字识别训练程序BPNN.m
文件 692 2018-12-30 20:27 手写体数字识别训练程序BPNNPredict.m
文件 1502 2017-03-14 09:40 手写体数字识别训练程序displayData.m
文件 7511764 2017-03-14 09:40 手写体数字识别训练程序ex3data1.mat
文件 2068 2019-01-05 12:45 手写体数字识别训练程序HandwriteRecognizationTest.m
文件 107 2018-12-21 13:27 手写体数字识别训练程序sigmoid.m
文件 2436858 2018-12-31 20:34 手写体数字识别训练程序weight.mat
目录 0 2018-12-28 16:41 手写体数字识别训练程序手写体数字识别训练数据
文件 7511764 2017-03-14 09:40 手写体数字识别训练程序手写体数字识别训练数据data.mat
目录 0 2018-12-28 16:39 手写体数字识别训练程序手写体数字识别训练数据pics
目录 0 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics
文件 355 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 1.jpg
文件 327 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 10.jpg
文件 342 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 100.jpg
文件 368 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 101.jpg
文件 364 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 102.jpg
文件 379 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 103.jpg
文件 339 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 104.jpg
文件 361 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 105.jpg
文件 329 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 106.jpg
文件 377 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 107.jpg
文件 379 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 108.jpg
文件 377 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 109.jpg
文件 341 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 11.jpg
文件 384 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 110.jpg
文件 374 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 111.jpg
文件 344 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 112.jpg
文件 348 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 113.jpg
文件 357 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 114.jpg
文件 310 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 115.jpg
............此处省略4991个文件信息
%% 主函数
function [W delta iterNum] = BPNN(size_ alpha lambda threshold maxIter X y W)
%BP神经网络实现
%参数含义:
%size - 一维数组,表示神经网络架构(不包含偏置单元)
%alpha - 学习率α
%lambda - 正则化参数
%threshold - 误差阈值
%maxIter - 最大迭代次数
%Xy - 训练数据
%W - 可断参数,如果没有则随机初始化
%判断参数合法性
if size(X 2) ~= size_(1) || size(y 2) ~= size_(end) || size(y 1) ~= size(X 1)
fprintf(‘训练数据集与模型结构不符
‘);
return;
end
%初始化一些参数
layerNum = length(size_);
maxUnitNum = max(size_);
m = size(X 1);
iterNum = 0;
%每个神经元的输出
a = zeros(layerNum maxUnitNum);
%每个神经元的误差
d = zeros(layerNum maxUnitNum);
%初始随机权重
if ~exist(‘W‘ ‘var‘) || isempty(W)
W = rand(layerNum - 1 maxUnitNum + 1 maxUnitNum + 1);
end
%迭代训练
while iterNum < maxIter
iterNum = iterNum + 1;
D = zeros(layerNum - 1 maxUnitNum + 1 maxUnitNum + 1);
delta = 0;
for i = 1 : m
%前向传播
[out a] = forwardPropagation(size_ W X(i :) a);
d(end 1 : length(out)) = out - y(i :);
delta = delta + sum(abs(out - y(i :)));
%反向传播
[d D] = backPropagation(size_ W d D a);
end
delta = delta / m;
fprintf(‘delta=%f
‘ delta);
if delta <= threshold
fprintf(‘误差小于阈值,训练结束‘);
break;
end
%调整权重
W = adjustWeight(size_ W D alpha lambda m);
end
end
%% 一次前向传播
function [out a] = forwardPropagation(size_ W x a)
out = x;
a(1 1 : size_(1)) = x;
for i = 1 : length(size_) - 1
out = reshape(W(i 2 : size_(i + 1) + 1 1 : size_(i) + 1) size_(i + 1) size_(i) + 1) * [1 out]‘;
out = sigmoid(out‘);
a(i + 1 1 : size_(i + 1)) = out;
end
end
%% 一次反向传播
function [d D] = backPropagation(size_ W d D a)
for i = length(size_) - 1 : -1 : 1
%调节每个神经元的误差值
d(i 1 : size_(i)) = d(i + 1 1 : size_(i + 1)) * ...
reshape(W(i 2 : size_(i + 1) + 1 2 : size_(i) + 1) size_(i + 1) size_(i))...
.* (a(i 1 : size_(i)) .* (1 - a(i 1 : size_(i))));
% 累加调节每个权重的误差
D(i 2 : size_(i + 1) + 1 1 : size_(i) + 1) = D(i 2 : size_(i + 1) + 1 1 : size_(i) + 1) + ...
reshape(([1; a(i 1 : size_(i))‘] * d(i + 1 1 : size_(i + 1)))‘ 1 size_(i + 1) size_(i) + 1);
end
end
%% 调整权重
function W = adjustWeight(size_ W D alpha lambda m)
D = D / m;
for i2 = 1 : length(size_) - 1
%非常数项系数加上正则化参数
D(i2 2 : size_(i2 + 1) + 1 2 : size_(i2) + 1) = D(i2 2 : size_(i2 + 1) + 1 2 : size_(i2) + 1) + ...
lambda * W(i2 2 : size_(i2 + 1) + 1 2 : size_(i2) + 1) / m;
%梯度下降调整权重
W(i2 1 : size_(i2 + 1) + 1 1 : size_(i2) + 1) = W(i2 1 : size_(i2 + 1) + 1 1 : size_(i2) + 1) -...
alpha * D(i2 1 : size_(i2 + 1) + 1 1 : size_(i2) + 1);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-05 12:47 手写体数字识别训练程序
文件 3223 2018-12-31 15:04 手写体数字识别训练程序BPNN.m
文件 692 2018-12-30 20:27 手写体数字识别训练程序BPNNPredict.m
文件 1502 2017-03-14 09:40 手写体数字识别训练程序displayData.m
文件 7511764 2017-03-14 09:40 手写体数字识别训练程序ex3data1.mat
文件 2068 2019-01-05 12:45 手写体数字识别训练程序HandwriteRecognizationTest.m
文件 107 2018-12-21 13:27 手写体数字识别训练程序sigmoid.m
文件 2436858 2018-12-31 20:34 手写体数字识别训练程序weight.mat
目录 0 2018-12-28 16:41 手写体数字识别训练程序手写体数字识别训练数据
文件 7511764 2017-03-14 09:40 手写体数字识别训练程序手写体数字识别训练数据data.mat
目录 0 2018-12-28 16:39 手写体数字识别训练程序手写体数字识别训练数据pics
目录 0 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics
文件 355 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 1.jpg
文件 327 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 10.jpg
文件 342 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 100.jpg
文件 368 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 101.jpg
文件 364 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 102.jpg
文件 379 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 103.jpg
文件 339 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 104.jpg
文件 361 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 105.jpg
文件 329 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 106.jpg
文件 377 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 107.jpg
文件 379 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 108.jpg
文件 377 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 109.jpg
文件 341 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 11.jpg
文件 384 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 110.jpg
文件 374 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 111.jpg
文件 344 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 112.jpg
文件 348 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 113.jpg
文件 357 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 114.jpg
文件 310 2018-12-28 16:35 手写体数字识别训练程序手写体数字识别训练数据pics 115.jpg
............此处省略4991个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)