zoukankan      html  css  js  c++  java
  • 【DeepLearning】Exercise:Softmax Regression

    Exercise:Softmax Regression

    习题的链接:Exercise:Softmax Regression 

    softmaxCost.m

    function [cost, grad] = softmaxCost(theta, numClasses, inputSize, lambda, data, labels)
    
    % numClasses - the number of classes 
    % inputSize - the size N of the input vector
    % lambda - weight decay parameter
    % data - the N x M input matrix, where each column data(:, i) corresponds to
    %        a single test set
    % labels - an M x 1 matrix containing the labels corresponding for the input data
    %
    
    % Unroll the parameters from theta
    theta = reshape(theta, numClasses, inputSize);
    
    numCases = size(data, 2);
    
    % labels row, numCases col
    groundTruth = full(sparse(labels, 1:numCases, 1));
    cost = 0;
    
    thetagrad = zeros(numClasses, inputSize);
    
    %% ---------- YOUR CODE HERE --------------------------------------
    %  Instructions: Compute the cost and gradient for softmax regression.
    %                You need to compute thetagrad and cost.
    %                The groundTruth matrix might come in handy.
    
    M = theta * data;
    M = bsxfun(@minus, M, max(M, [], 1));
    M = exp(M);
    M = bsxfun(@rdivide, M, sum(M));
    diff = groundTruth - M;
    
    cost = -(1/numCases) * sum(sum(groundTruth .* log(M))) + (lambda/2) * sum(sum(theta .* theta));
    for i=1:numClasses
        thetagrad(i, :) = -(1/numCases) * (sum(data .* repmat(diff(i, :), inputSize, 1), 2))' + lambda * theta(i, :);
    end
    % ------------------------------------------------------------------
    % Unroll the gradient matrices into a vector for minFunc
    grad = [thetagrad(:)];
    end

    softmaxPredict.m

    function [pred] = softmaxPredict(softmaxModel, data)
    
    % softmaxModel - model trained using softmaxTrain
    % data - the N x M input matrix, where each column data(:, i) corresponds to
    %        a single test set
    %
    % Your code should produce the prediction matrix 
    % pred, where pred(i) is argmax_c P(y(c) | x(i)).
     
    % Unroll the parameters from theta
    theta = softmaxModel.optTheta;  % this provides a numClasses x inputSize matrix
    pred = zeros(1, size(data, 2));
    
    %% ---------- YOUR CODE HERE --------------------------------------
    %  Instructions: Compute pred using theta assuming that the labels start 
    %                from 1.
    
    [~, pred] = max(theta * data);
    
    % ---------------------------------------------------------------------
    
    end

    Accuracy: 92.640%

  • 相关阅读:
    Linux命令行和Shell脚本编程
    Excel自动触发时间
    dom4j读取xml文件 简单例子
    GSM & Foxit Reader
    ThreadPoolExecutor 线程池
    Linux /var/log
    delphi开发技巧
    利用ScktSrvr打造多功能Socket服务器
    delphi中Windows消息大全使用详解
    自己构造注入点方便入侵
  • 原文地址:https://www.cnblogs.com/ganganloveu/p/4488899.html
Copyright © 2011-2022 走看看