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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mac idea2021 激活码(JetBrains全家桶)

    (mac idea2021 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~41MD…

    2022年3月30日
    222
  • Flowable实战-Camel使用「建议收藏」

    Flowable实战-Camel使用「建议收藏」本博客将讨论了如何在Flowable6.4.1中安装和使用Camel。希望在阅读此博客后,您将能够设置FlowableTask应用程序,以允许用户运行可以通过Camel路由与其他应用程序集成Flowable。此博客使用FlowableCamel模块中的示例。CamelCamel是一个apache项目,它是为了让Java应用程序之间提供标准化的集成平台。它以组件的形…

    2022年5月21日
    84
  • JavaScript高级编程

    JavaScript高级编程

    2021年11月13日
    39
  • intellij idea激活码【在线注册码/序列号/破解码】

    intellij idea激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    62
  • matlab生成浮雕灰度图,将照片做成浮雕灰度图[通俗易懂]

    matlab生成浮雕灰度图,将照片做成浮雕灰度图[通俗易懂]原标题:将照片做成浮雕灰度图做雕刻行业的朋友都知道,在日常的雕刻生产中常用到的文件格式有灰度图以及精雕的浮雕图。经常会接到一些客户的咨询,如何将照片做成浮雕灰度图?在回答这个问题之前,我觉得有必要先说下浮雕灰度图的概念。灰度图像指的是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑…

    2022年6月20日
    45
  • Oracle数据库数据恢复方法

    Oracle数据库数据恢复方法前一段遇到:操作系统崩溃,数据库留有所有数据文件,控制文件,配置文件。下面记录一下数据恢复过程。1.下载安装Oracle数据库。安装的数据库定要与之前版本的数据库版本一致。安装的数据库位置要与之前安装的数据库位置一致。2.创建新的数据库。创建新的数据库实例,实例名称密码要与之前数据库实例一致。3.打开sqlPlus命令行(1)输入命令system/密码assysdba。(2)shutdownimmediate;关闭数据库。4.使用原本的数据文件替换到新的数据

    2022年7月17日
    26

发表回复

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

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