• 大小: 10.18MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-30
  • 语言: 其他
  • 标签: CNN  分类  

资源简介

该算法内容介绍很详细 算法步骤也容易看懂 在此分享给大家

资源截图

代码片段和文件信息

function [cost grad preds] = cnnCost(theta images labelscnnConfig meta pred)
% Calcualte cost and gradient for a single layer convolutional
% neural network followed by a softmax layer with cross entropy
% objective.
%                            
% Parameters:
%  theta      -  a vector parameter
%  images     -  stores images in imageDim x imageDim x channel x numImges
%                array    
%  labels     -  for softmax output layer and cross entropy cost function
%  the labels are the class numbers.
%  pred       -  boolean only forward propagate and return
%                predictions
%
% Returns:
%  cost       -  cross entropy cost
%  grad       -  gradient with respect to theta (if pred==False)
%  preds      -  list of predictions for each example (if pred==True)

if ~exist(‘pred‘‘var‘)
    pred = false;
end;



theta = thetaChange(thetameta‘vec2stack‘cnnConfig);
%%======================================================================
%% STEP 1a: Forward Propagation
numlayers = size(theta 1);
numImages = size(images4);
layersizes = meta.layersize;



temp = cell(numlayers 1);
grad = cell(numlayers 1);
temp{1}.after = images;
assert(isequal(size(images)[layersizes{1} numImages])‘layersize do not match at layer 1‘);

for l = 2 : numlayers
    templayer = cnnConfig.layer{l};
    tempTheta = theta{l};
    switch templayer.type
        case ‘conv‘
            [temp{l}.after temp{l}.linTrans] = cnnConvolve(temp{l-1}.after tempTheta.W tempTheta.b templayer.nonLinearType templayer.conMatrix);         
        case ‘pool‘
            [temp{l}.after temp{l}.weights] = cnnPool(templayer.poolDim temp{l-1}.after templayer.poolType);
        case ‘stack2line‘
            temp{l}.after = reshape(temp{l-1}.after [] numImages);
        case {‘sigmoid‘‘tanh‘‘relu‘‘softmax‘}
            temp{l}.after = nonlinear(temp{l-1}.after tempTheta.W tempTheta.b templayer.type);
        case ‘softsign‘
            [temp{l}.after temp{l}.linTrans] = nonlinear(temp{l-1}.after tempTheta.W tempTheta.b templayer.type);
    end
    assert(isequal(size(temp{l}.after)[layersizes{l} numImages])‘layersize do not match at layer %d\n‘l);
end

%%======================================================================
%% STEP 1b: Calculate Cost
% Makes predictions given probs and returns without backproagating errors.
if pred
    [~preds] = max(temp{numlayers}.after[]1);
    preds = preds‘;
    cost = 0;
    grad = 0;
    return;
end;

switch cnnConfig.costFun
    case ‘crossEntropy‘
        numClasses = cnnConfig.layer{numlayers}.dimension;
        extLabels = zeros(numClasses numImages);
        extLabels(sub2ind(size(extLabels) labels‘ 1 : numImages)) = 1;
        cost = - mean(sum(extLabels .* log(temp{numlayers}.after)));
end

%%======================================================================
%% STEP 1c: Backpropagation
if strcmp(cnnConfig.costFun ‘crossEntropy‘) && strcmp(templayer.type ‘softmax‘)
    temp{l}.gradBefore = t

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    .......      8029  2014-03-16 21:06  0000\cnnCost.m

    .......      2619  2014-03-16 21:06  0000\cnnInitParams.m

    .......       826  2014-03-16 21:06  0000\Dataset\MNIST\loadMNISTImages.m

    .......       516  2014-03-16 21:06  0000\Dataset\MNIST\loadMNISTLabels.m

    .......   7840016  2014-03-16 21:06  0000\Dataset\MNIST\t10k-images-idx3-ubyte

    .......     10008  2014-03-16 21:06  0000\Dataset\MNIST\t10k-labels-idx1-ubyte

    .......  47040016  2014-03-16 21:06  0000\Dataset\MNIST\train-images-idx3-ubyte

    .......     60008  2014-03-16 21:06  0000\Dataset\MNIST\train-labels-idx1-ubyte

    .......      1250  2014-03-16 21:06  0000\DebugTools\computeNumericalGradient.m

    .......      2647  2014-03-16 21:06  0000\DebugTools\display_network.m

    .......       679  2014-03-16 21:06  0000\DebugTools\grad_check.m

    .......       733  2014-03-16 21:06  0000\DebugTools\samplePatches.m

    .......      2647  2014-03-16 21:06  0000\DebugTools\thetaChange.m

     文件       3179  2016-06-02 09:16  0000\Demo\cnnTrain.m

     文件        794  2016-05-31 11:20  0000\Demo\config.m

     文件       1171  2016-05-11 10:34  0000\Demo\configTestGradient.m

    .......      3133  2014-03-16 21:06  0000\layer\cnnConvolve.m

    .......      1403  2014-03-16 21:06  0000\layer\cnnParamsToStack.m

    .......      2525  2014-03-16 21:06  0000\layer\cnnPool.m

    .......       988  2014-03-16 21:06  0000\layer\nonlinear.m

    .......      3956  2014-03-16 21:06  0000\layer\Test.m

    .......       231  2014-03-16 21:06  0000\layer\TestPool.m

    .......     18026  2014-03-16 21:06  0000\LICENSE

    .......      2108  2014-03-16 21:06  0000\README.md

    .......       102  2014-03-16 21:06  0000\Testing\test.m

    .......      1718  2014-03-16 21:06  0000\Testing\testGradCom.m

    .......        93  2014-03-16 21:06  0000\Testing\testInit.m

    .......       651  2014-03-16 21:06  0000\Testing\testThetaChange.m

    .......      2538  2014-03-16 21:06  0000\TrainingMethod\minFuncSGD.m

     目录          0  2014-03-16 21:06  0000\Dataset\MNIST

............此处省略10个文件信息

评论

共有 条评论