ufldl学习笔记与编程作业:softmaxregression(vectorization加速)

cxchanpin cxchanpin     2022-08-28     724

关键词:

ufldl学习笔记与编程作业:Softmax Regression(vectorization加速)


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

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

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

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


本节是对ufldl学习笔记与编程作业:Softmax Regression(softmax回归)版本号的改进。


哈哈,把向量化的写法给写出来了,尼玛好快啊。

仅仅须要2分钟。200迭代就跑完了。

昨晚的for循环写法跑了我1个半小时。

事实上实现向量化写法,要把各种矩阵给在纸上写出来。



1 感谢tornadomeet,尽管他做的是旧教程的实验,可是从他那里学了几个matlab函数。http://www.cnblogs.com/tornadomeet/archive/2013/03/23/2977621.html

比方sparse和full。‘

2 还有从旧教程http://deeplearning.stanford.edu/wiki/index.php/Exercise:Softmax_Regression

学了

% M is the matrix as described in the text
M = bsxfun(@rdivide, M, sum(M))

3 新教程学到了

I=sub2ind(size(A), 1:size(A,1), y);
values = A(I);

下面是softmax_regression_vec.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))];%加1行
  p = bsxfun(@rdivide,a,sum(a));
  c = log2(p);
  i = sub2ind(size(c), y,[1:size(c,2)]);
  values = c(i);
  f = -sum(values);

  d = full(sparse(1:m,y,1));
  d = d(:,1:(size(d,2)-1));
  p = p(1:(size(p,1)-1),:);%减1行
  g = X*(p'.-d);

  %
  % 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

本文作者:linger

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



[机器学习]ufldl笔记-convolutionalneuralnetwork-反向传播与梯度计算

前言  本文是我在学习卷积神经网络(ConvolutionalNeuralNetwork)时的笔记,内容涉及CNN的反向传播、梯度计算等,主要解释了反向传播中Conv层(卷积层)和池化层(Pooling层)之间误差的传递过程和... 查看详情

[机器学习]ufldl笔记-convolutionalneuralnetwork-全连接局部连接卷积与池化

前言  本文是我在学习卷积神经网络(ConvolutionalNeuralNetwork)时的笔记,主要参考资料是AndrewNg老师在UFLDLTutorial中的相关章节。关于CNN的笔记在网络上很多了,本文不再详述各种细节,只对其中容易混淆和难... 查看详情

ufldl教程笔记及练习答案三(softmax回归与自我学习***)

1:softmax回归当p(y|x,theta)满足多项式分布,通过GLM对其进行建模就能得到htheta(x)关于theta的函数,将其称为softmax回归。教程中已经给了cost及gradient的求法。须要注意的是一般用最优化方法求解參数theta的时候,採用的是贝叶斯学... 查看详情

[机器学习]ufldl笔记-autoencodersandsparsity

前言  [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的,内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。  本文的理论部分主要整理... 查看详情

[机器学习]ufldl笔记-pcaandwhitening

前言    [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的。内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。    撰写本文的原因是... 查看详情

[机器学习]ufldl笔记-反向传播算法(backpropagation)

前言  [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的。内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。    本文主要整理自UFLDL的“... 查看详情

[机器学习]ufldl笔记-sparsecoding(稀疏编码)

前言  [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的,内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。  本文的理论部分主要整理... 查看详情

[机器学习]ufldl笔记-sparsecoding(稀疏编码)

前言  [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的,内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。  本文的理论部分主要整理... 查看详情

[机器学习]ufldl笔记-反向传播算法(backpropagation)

前言  [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的。内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。    本文主要整理自UFLDL的“... 查看详情

[机器学习]ufldl笔记-convolutionalneuralnetwork-矩阵运算

前言  卷积神经网络的核心操作就是各种矩阵运算,在前向传播和反向传播中的各种形式的矩阵运算构成了CNN的计算体系,本文将在卷积神经网络(ConvolutionalNeuralNetwork)的背景下对相关的矩阵运算进行梳理ÿ... 查看详情

[机器学习]ufldl笔记-autoencodersandsparsity

前言  [机器学习]UFLDL笔记系列是以我学习UFLDLTutorial(AndrewNg老师主讲)时的笔记资料加以整理推出的,内容以无监督特征学习和深度学习为主,同时也参考了大量网上的相关资料。  本文的理论部分主要整理... 查看详情

学习笔记——作业的知识点与注意事项

1、 SQLServer 代理中包含很多的类别,有作业、警报、操作员、代理等,作业属于其中的一个类别2、 用自动化数据备份来介绍作业的具体运用规则①用命令符启用sqlserveragent②添加作业的类别,明确进行作业的任务1EXEC... 查看详情

《ros理论与实践》学习笔记机器人语音交互(代码片段)

《ROS理论与实践》学习笔记(七)机器人语音交互课程内容1.讯飞开放平台使用2.ROS语音识别与语音输出3.语音交互本讲作业结语在学习《ROS理论与实践》课程时,记录了学习过程中的编程练习,课后作业以及发现... 查看详情

《机器学习算法原理与编程实践》学习笔记

(上接第一章)1.2对象、矩阵与矢量化编程1.2.1对象与维度(略)1.2.2初识矩阵(略)1.2.3矢量化编程与GPU运算(略)1.2.4理解数学公式与NumPy矩阵运算1.矩阵的初始化#coding:utf-8importnumpyasnp#导入NumPy包#创建3*5的全0矩阵和全1的矩阵my... 查看详情

[机器学习]ufldl笔记-convolutionalneuralnetwork-矩阵运算

...关操作和克罗内克积(kroneckerproduct)等,在学习CNN的反向传播之前,我们必须先搞清楚这几种矩阵操作的计算过程,希望本文可以帮助大家理解卷积神经网络(CNN)提供一些帮助!  文章小节安... 查看详情

机器学习-吴恩达andrewngcoursera学习总结合集,编程作业技巧合集

...ps://www.coursera.org/learn/machine-learning/home/welcome课程总结机器学习MachineLearning-吴恩达AndrewNg第1~5课总结机器学习MachineLearning-吴恩达AndrewNg第6~10课总结机器学 查看详情

《机器学习算法原理与编程实践》学习笔记

(上接第一章)1.2.5Linalg线性代数库  在矩阵的基本运算基础之上,NumPy的Linalg库可以满足大多数的线性代数运算。  .矩阵的行列式  .矩阵的逆  .矩阵的对称  .矩阵的秩  .可逆矩阵求解线性方程1.矩阵的行列式In[4... 查看详情

多线程编程学习笔记——线程池

接上文多线程编程学习笔记——线程池(一) 三、线程池与并行度此示例是学习如何应用线程池实现大量的操作,及与创建大量线程进行工作的区别。1.代码如下usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics;usingS... 查看详情