基于逻辑回归和神经网络识别手写数字(从0到9)(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现

💥1 概述

    人工神经网络( Artificial Neural Networks,简写为ANNs)也简称为神经网络( NNs)或称作连接模型( Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

   简而言之是生物神经元可以接受许多输入,而不仅仅是一个输入,树突收集了这些电信号,将其组合形成更强的电信号。如果信号足够强,超过阈值,神经元就会发射信号,沿着轴突,到达终端,将信号传递给下一个神经元的树突。

    输入值的数字范围是从0-255,为了避免输入信号过大,导致过饱和,所以需要对每一个像素做归一化处理,最简单的归一化处理就是给每一个像素都除以255,把像素变成0.01-1之间的数字。所以神经网络模型的输入值是784个0.01-1之间的数字,同时输出值是经过算法模型判别后输出的0-9的10个数字。

📚2 运行结果

部分代码:

function [all_theta] = oneVsAll(X, y, num_labels, lambda)
%X为训练集输入参数,为5000*400矩阵;
%y为训练集标记输出,为5000*1矩阵;
%num_labels为分类数,共10类;
%lambda为正则化参数

[m,n] = size(X);     %m为训练集个数(5000),n为训练集特征数(400)
X = [ones(m,1),X];   %加上X0,X为5000*401矩阵;
%t = zeros(n+1);
options = optimset('GradObj','on','MaxIter',100);
for k = 1:num_labels
    initialTheta = zeros(n+1,1);
    [theta,functionval,exitflag] = ...
        fmincg(@(t)(Ircostfunction(t,X,(y==k),lambda)),initialTheta,options)
    all_theta(:,k) = theta;
end

function p = predict(Theta1, Theta2, X)
%Theta1为25*401矩阵;
%Theta2为10*26矩阵;
%X为5000*400矩阵;

[m,n] = size(X);
p =zeros(m,1);
X = [ones(m,1),X];  %X为5000*401矩阵; 
Z1 = X * Theta1';   %Z1为5000*25矩阵;
A1 = sigmoid(Z1);   %A1为5000*25矩阵;
A1 = [ones(m,1),A1]; %A1为5000*26矩阵;
Z2 = A1 * Theta2';  %Z2为5000*10矩阵;
A2 = sigmoid(Z2);   %A2为5000*10矩阵;
[c,p] = max(A2,[],2); %c为A2中返回每一行的最大值,p为最大值的索引值,为5000*1矩阵;


end 

🎉3 参考文献

[1]时梨,蔡林.基于Python语言构建神经网络识别手写数字的研究[J].电脑编程技巧与维护,2021(2):117-118130

🌈4 Matlab代码实现

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值