💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
目录
💥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