softmax分类基于matlab梯度下降softmax回归minist数据分类含Matlab源码 1645期

Posted 紫极神光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了softmax分类基于matlab梯度下降softmax回归minist数据分类含Matlab源码 1645期相关的知识,希望对你有一定的参考价值。

一、简介

随着科学技术的不断更新发展,人们在工作生活中越来越依赖计算机.人们希望把传统手写办公和计算机办公有机结合起来.为解决这一问题,手写数字识别为大家提供了一个新方向.高精确度和高效率办公与学习是人们日常工作生活中孜孜不倦追求的目标.随着网络信息技术的不断发展,深度学习逐渐被大家熟悉及利用,其中卷积神经网络在一系列计算机领域中取得了突破性进展.然而,手写数字识别由于其自身特点和复杂性,无论在技术领域还是在应用领域,仍然存在很大的发展空间.通过Softmax函数进行minist数据分类。

二、部分源代码

function [theta,test_pre,rate] = mysoftmax_gd(X_test,X,label,lambda,alpha,MAX_ITR,varargin)
% 该函数用于实现梯度下降法softmax回归
% 调用方式:[theta,test_pre,rate] = mysoftmax_gd(X_test,X,label,lambda,alpha,MAX_ITR,varargin)
% X_test:测试输入数据
% X:训练输入数据,组织为m*p矩阵,m为案例个数,p为加上常数项之后的属性个数
% label:训练数据标签,组织为m*1向量(数值型)
% lambda:权重衰减参数weight decay parameter
% alpha:梯度下降学习速率
% MAX_ITR:最大迭代次数
% varargin:可选参数,输入初始迭代的theta系数,若不输入,则默认随机选取
% theta:梯度下降法的theta系数寻优结果
% test_pre:测试数据预测标签
% rata:训练数据回判正确率

% Genlovy Hoo,2016.06.29. genlovhyy@163.com
%% 梯度下降寻优
Nin=length(varargin);
if Nin>1
    error('输入太多参数') % 若可选输入参数超过1个,则报错
end
[m,p] = size(X);
numClasses = length(unique(label)); % 求取标签类别数
if Nin==0
    theta = 0.005*randn(p,numClasses); % 若没有输入可选参数,则随机初始化系数
else
    theta=varargin1; % 若有输入可选参数,则将其设定为初始theta系数
end
cost=zeros(MAX_ITR,1); % 用于追踪代价函数的值
for k=1:MAX_ITR
    [cost(k),grad] = softmax_cost_grad(X,label,lambda,theta); % 计算代价函数值和梯度
    theta=theta-alpha*grad; % 更新系数
end
%% 回判预测
[~,~,Probit] = softmax_cost_grad(X,label,lambda,theta);
[~,label_pre] = max(Probit,[],2);
index = find(label==label_pre); % 找出预测正确的样本的位置
rate = length(index)/m; % 计算预测精度
%% 绘制代价函数图
figure('Name','代价函数值变化图');
plot(0:MAX_ITR-1,cost)
xlabel('迭代次数'); ylabel('代价函数值')
title('代价函数值变化图');% 绘制代价函数值变化图
%% 测试数据预测
[mt,pt] = size(X_test);
Probit_t = zeros(mt,length(unique(label)));
for smpt = 1:mt
    Probit_t(smpt,:) = exp(X_test(smpt,:)*theta)/sum(exp(X_test(smpt,:)*theta));
end
[~,test_pre] = max(Probit_t,[],2);


三、运行结果

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 由伟,刘亚秀.MATLAB数据分析教程[M].清华大学出版社,2020.
[2]王岩,隋思涟.试验设计与MATLAB数据分析[M].清华大学出版社,2012.

以上是关于softmax分类基于matlab梯度下降softmax回归minist数据分类含Matlab源码 1645期的主要内容,如果未能解决你的问题,请参考以下文章

softmax 函数多分类原理教程

数学建模基于matlab动画演示梯度下降仿真含Matlab源码 1541期

机器学习线性回归(最小二乘法/梯度下降法)多项式回归logistic回归softmax回归

图像分类基于matlab HOG+SVM图像分类识别含Matlab源码 2141期

Matlab基于极端梯度提升XGBoost实现分类预测(Excel可直接替换数据)

matlab用最速下降法(梯度法)计算Rosenbrock函数,求程序代码