ufldl学习笔记和编程作业:Softmax Regression(softmax回报)

ufldl学习笔记和编程作业:Softmax Regression(softmax回报)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

ufldl学习笔记与编程作业:Softmax Regression(softmax回归)

ufldl出了新教程。感觉比之前的好,从基础讲起。系统清晰,又有编程实践。

在deep learning高质量群里面听一些前辈说,不必深究其它机器学习的算法,能够直接来学dl。

于是近期就開始搞这个了。教程加上matlab编程,就是完美啊。

新教程的地址是:http://ufldl.stanford.edu/tutorial/

本节学习链接:http://ufldl.stanford.edu/tutorial/supervised/SoftmaxRegression/

softmax回归事实上是逻辑回归的扩展形式,

逻辑回归通经常使用作2类的分类器,

softmax则用作多类的分类器。

从数学形式来说,事实上逻辑回归就是softmax回归中k=2的情况。这点教程里也说了。

softmax的目标函数和參数的偏导数教程推导也非常清楚。

对于编程作业。因为对matlab实现不熟,跳了非常多坑。

弄了非常久,并且还仅仅是用for循环来实现的。

这次最终体会到了,for循环的性能之差了。迭代了200次。1个多小时。

也跟这个模型比前两个模型复杂有关。

先贴第一个版本号的代码吧。以后想出了向量化的编程再补上。

下面是softmax_regression.m的代码

function [f,g] = softmax_regression_vec(theta, X,y)  %  % Arguments:  %   theta - A vector containing the parameter values to optimize.  %       In minFunc, theta is reshaped to a long vector.  So we need to  %       resize it to an n-by-(num_classes-1) matrix.  %       Recall that we assume theta(:,num_classes) = 0.  %  %   X - The examples stored in a matrix.    %       X(i,j) is the i'th coordinate of the j'th example.  %   y - The label for each example.  y(j) is the j'th example's label.  %  m=size(X,2);  n=size(X,1);  %theta本来是矩阵,传參的时候,theta(:)这样进来的。是一个vector,仅仅有一列,如今我们得把她变为矩阵  % theta is a vector;  need to reshape to n x num_classes.  theta=reshape(theta, n, []);  num_classes=size(theta,2)+1;    % initialize objective value and gradient.  f = 0;  g = zeros(size(theta));  h = theta'*X;%h(k,i)第k个theta。第i个样本  麻痹还是得循环求啊  a = exp(h);  a = [a;ones(1,size(a,2))];%加行  b = sum(a,1);  for i=1:m    for j=1:num_classes      if y(i)!=j        continue;      end      f+=log2(a(j,i)/b(i));    end  end  f=-f;%符号  flag=0;  for j=1:num_classes-1    for i=1:m      if (y(i)==j)        flag =1;      else         flag=0;      end      g(:,j)+=X(:,i)*(a(j,i)/b(i)-flag);    end  end  %  % TODO:  Compute the softmax objective function and gradient using vectorized code.  %        Store the objective function value in 'f', and the gradient in 'g'.  %        Before returning g, make sure you form it back into a vector with g=g(:);  %%%% YOUR CODE HERE %%%    g=g(:); % make gradient a vector for minFunc

下面是执行结果:

ufldl学习笔记和编程作业:Softmax Regression(softmax回报)

旧教程http://deeplearning.stanford.edu/wiki/index.php/Exercise:Softmax_Regression

也有softmax的编程作业。里面也是识别手写体数字。

当中提到准确率的问题。

Our implementation achieved an accuracy of 92.6%. If your model’s accuracy is significantly less (less than 91%), check your code, ensure that you are using the trained weights, and that you are training your model on the full 60000 training images. Conversely, if your accuracy is too high (99-100%), ensure that you have not accidentally trained your model on the test set as well.

也就是说,从准确率来说,我的代码还是能够的。

接下来就是想办法实现向量化编程,加高速度了。


假设您有什么好想法。记得分享一下哦!

本文作者:linger

本文链接:http://blog.csdn.net/lingerlanlan/article/details/38410123

版权声明:本文博客原创文章,博客,未经同意,不得转载。

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117747.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows窗体线程异常_指针在声明和使用时有何不同

    windows窗体线程异常_指针在声明和使用时有何不同在多线程设计中,许多人为了省事,会将对话框类或其它类的指针传给工作线程,而在工作线程中调用该类的成员函数或成员变量等等。但是在Debug版本时,在某些情况下,特别是在工作线程中调用pWnd->UpdateData(FALSE)时,会出现错误。这个错误的原因网上有许多地方讲

    2022年9月5日
    2
  • ZUUL-API网关[通俗易懂]

    ZUUL-API网关[通俗易懂]更多干货 分布式实战(干货) springcloud实战(干货) mybatis实战(干货) springboot实战(干货) React入门实战(干货) 构建中小型互联网企业架构(干货) python学习持续更新 ElasticSearch笔记 kafkastorm实战(干货) …

    2022年8月15日
    2
  • batchnormalization是什么意思_batchnorm层参数个数

    batchnormalization是什么意思_batchnorm层参数个数1.背景本篇博文主要讲解2015年深度学习领域,非常值得学习的一篇文献:《BatchNormalization:AcceleratingDeepNetworkTrainingbyReducingInternalCovariateShift》,这个算法目前已经被大量的应用,最新的文献算法很多都会引用这个算法,进行网络训练,可见其强大之处非同一般啊。近年来深度学习捷报连连…

    2022年10月14日
    0
  • Python 数据相关性分析

    Python 数据相关性分析概述在我们的工作中,会有一个这样的场景,有若干数据罗列在我们的面前,这组数据相互之间可能会存在一些联系,可能是此增彼涨,或者是负相关,也可能是没有关联,那么我们就需要一种能把这种关联性定量的工具来对数据进行分析,从而给我们的决策提供支持,本文即介绍如何使用Python进行数据相关性分析。关键词python方差协方差相关系数离散度pandasnumpy实验数据准备…

    2022年6月9日
    46
  • GoDaddy免费空间详情

    GoDaddy免费空间详情导读:  在GoDaddy任意购买一个域名后就可以得到一个免费空间  空间大小是5G,流量限制是25G,文件大小不限,带广告(可去除),PHP或者ASP,数据库为MSSQL或者Access。  我现在用的GoDaddy免费空间是Linux(可选Windows),因为之前用的Windows因IP早已被封,所以将其删掉而重新选择了一个Linux。  免费空间换IP的方法只有一个:更换换主机类

    2022年7月11日
    21
  • 有哪些顶级水平的中国程序员?[通俗易懂]

    有哪些顶级水平的中国程序员?[通俗易懂]本文转载自启舰杂谈我们熟知的很多程序员都是国外的。那我们中国有没有顶尖级的程序员,出于好奇,我全网进行了搜罗,这里把我认为比较厉害的一些程序员展示给大家。篇幅有限,很多程序员我也没听过,所以就没有展示。排名顺序也没什么特别的,先看上谁,谁就排第一。比如,第一的尤雨溪单纯就是因为他长的帅如果你认为还有哪位大咖是你心目中的神,可以列出来,如果列的人多的话,我再搞一期给大家介绍介绍。一、尤雨溪江湖流传一个小故事:一款名叫Clear的软件,在…

    2022年10月11日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号