• 大小: 5KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: Matlab
  • 标签: GMM  ,代码  

资源简介

GMM代码用于目标检测,效果不错 ,需要自己修改下。

资源截图

代码片段和文件信息

function [net options] = glmtrain(net options x t)
%GLMTRAIN Specialised training of generalized linear model
%
% Description
% NET = GLMTRAIN(NET OPTIONS X T) uses the iterative reweighted
% least squares (IRLS) algorithm to set the weights in the generalized
% linear model structure NET.  This is a more efficient alternative to
% using GLMERR and GLMGRAD and a non-linear optimisation routine
% through NETOPT. Note that for linear outputs a single pass through
% the  algorithm is all that is required since the error function is
% quadratic in the weights.  The error function value at the final set
% of weights is returned in OPTIONS(8). Each row of X corresponds to
% one input vector and each row of T corresponds to one target vector.
%
% The optional parameters have the following interpretations.
%
% OPTIONS(1) is set to 1 to display error values during training. If
% OPTIONS(1) is set to 0 then only warning messages are displayed.  If
% OPTIONS(1) is -1 then nothing is displayed.
%
% OPTIONS(2) is a measure of the precision required for the value of
% the weights W at the solution.
%
% OPTIONS(3) is a measure of the precision required of the objective
% function at the solution.  Both this and the previous condition must
% be satisfied for termination.
%
% OPTIONS(5) is set to 1 if an approximation to the Hessian (which
% assumes that all outputs are independent) is used for softmax
% outputs. With the default value of 0 the exact Hessian (which is more
% expensive to compute) is used.
%
% OPTIONS(14) is the maximum number of iterations for the IRLS
% algorithm;  default 100.
%
% See also
% GLM GLMERR GLMGRAD
%

% Copyright (c) Ian T Nabney (1996-2001)

% Check arguments for consistency
errstring = consist(net ‘glm‘ x t);
if ~errstring
  error(errstring);
end

if(~options(14))
  options(14) = 100;
end

display = options(1);
% Do we need to test for termination?
test = (options(2) | options(3));

ndata = size(x 1);
% Add a column of ones for the bias 
inputs = [x ones(ndata 1)];

% Linear outputs are a special case as they can be found in one step
if strcmp(net.outfn ‘linear‘)
  if ~isfield(net ‘alpha‘)
    % Solve for the weights and biases using left matrix divide
    temp = inputs\t;
  elseif size(net.alpha == [1 1])
    % Use normal form equation
    hessian = inputs‘*inputs + net.alpha*eye(net.nin+1);
    temp = pinv(hessian)*(inputs‘*t);  
  else
    error(‘Only scalar alpha allowed‘);
  end
  net.w1 = temp(1:net.nin :);
  net.b1 = temp(net.nin+1 :);
  % Store error value in options vector
  options(8) = glmerr(net x t);
  return;
end

% Otherwise need to use iterative reweighted least squares
e = ones(1 net.nin+1);
for n = 1:options(14)

  switch net.outfn
    case ‘lo

评论

共有 条评论