matlab+BP神经网络 手写体数字识别训练程序含训练数据


matlab+BP神经网络 手写体数字识别训练程序(含训练数据)。 包含5000张手写字数字图片(20x20像素),以及matlab训练程序。
资源截图
代码片段和文件信息
%% 主函数
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  手写体数字识别训练程序手写体数字识别训练数据pics1.jpg
     文件         327  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics10.jpg
     文件         342  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics100.jpg
     文件         368  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics101.jpg
     文件         364  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics102.jpg
     文件         379  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics103.jpg
     文件         339  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics104.jpg
     文件         361  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics105.jpg
     文件         329  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics106.jpg
     文件         377  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics107.jpg
     文件         379  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics108.jpg
     文件         377  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics109.jpg
     文件         341  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics11.jpg
     文件         384  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics110.jpg
     文件         374  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics111.jpg
     文件         344  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics112.jpg
     文件         348  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics113.jpg
     文件         357  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics114.jpg
     文件         310  2018-12-28 16:35  手写体数字识别训练程序手写体数字识别训练数据pics115.jpg
............此处省略4991个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)