【DeepLearning】Exercise:Softmax Regression

5203 단어 SSI
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%

좋은 웹페이지 즐겨찾기