X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fnnet-0.1.13%2Fnewp.m;fp=octave_packages%2Fnnet-0.1.13%2Fnewp.m;h=7fb089da56051167fda3b7a9e384511c3f834e70;hp=0000000000000000000000000000000000000000;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/nnet-0.1.13/newp.m b/octave_packages/nnet-0.1.13/newp.m new file mode 100644 index 0000000..7fb089d --- /dev/null +++ b/octave_packages/nnet-0.1.13/newp.m @@ -0,0 +1,145 @@ +## Copyright (C) 2007 Michel D. Schmid +## +## +## This program is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; see the file COPYING. If not, write to the Free +## Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +## 02110-1301, USA. + +## -*- texinfo -*- +## @deftypefn {Function File} {@var{net}} = newp (@var{Pr},@var{ss},@var{transFunc},@var{learnFunc}) +## @code{newp} create a perceptron +## +## @example +## PLEASE DON'T USE THIS FUNCTIONS, IT'S STILL NOT FINISHED! +## ========================================================= +## @end example +## @example +## Pr - R x 2 matrix of min and max values for R input elements +## ss - a scalar value with the number of neurons +## transFunc - a string with the transfer function +## default = "hardlim" +## learnFunc - a string with the learning function +## default = "learnp" +## @end example +## +## +## @end deftypefn + +## @seealso{} + +## Author: Michel D. Schmid + +function net = newp(Pr,ss,transFunc,learnFunc) + + ## initial descriptipn + ## newp(Pr,ss,transFunc,learnFunc) + ## * Pr is a nx2 matrix with min and max values of standardized inputs + ## Pr means: p-range + ## * ss is a scalar value which describes the number of neurons + ## of output neurons + ## * transFunc is the transfer function, standard is "hardlim" + ## * learnFunc is the learning function, standard is "learnp" + + ## check range of input arguments + error(nargchk(1,4,nargin)) + + ## set defaults + if (nargin <2) + ss = 1; # means one neuron + endif + if (nargin <3) + transFunc = "hardlim"; + endif + if (nargin <4) + learnFunc = "learnp"; + endif + + ## check input args + checkInputArgs(Pr,ss); + +# ## get number of layers (without input layer) +# nLayers = length(ss); + + ## Standard architecture of neural network + net = __newnetwork(1,1,1,"newp"); + ## description: + ## first argument: number of inputs, nothing else allowed till now + ## it's not the same like the number of neurons in this input + ## second argument: number of layers, including output layer + ## third argument: number of outputs, nothing else allowed till now + ## it's not the same like the number of neurons in this output + ## fourth argument: network type + + + ## set inputs with limit of only ONE input + net.inputs{1}.range = Pr; + [nRows, nColumns] = size(Pr); + net.inputs{1}.size = nRows; + + ## set size of IW + net.IW{1,1} = zeros(1,nRows); + ## set number of bias, one per layer + net.b{iBiases,1} = 0; + + ## define everything with "layers" + net.numLayers = ss(end); + net.layers = cell(1,1); + net.layers{1}.size = ss(end); + net.layers{1}.transFcn = transFunc; + ## next row of code is only for MATLAB(TM) compatibility + ## I never used this the last 4 years ... + net.targets{i}.userdata = "Put your custom informations here!"; + + ## performance function + net.performFnc = "mae"; + + ## learning + net.biases{1}.learnFcn = learnFunc; + net.inputWeights{1,1}.learnFcn = learnFunc; + + ## adaption + net.adaptFcn = "trains"; + + ## Training + net.trainFcn = "trainc"; + + ## Initialization + net = __init(net); + +# ====================================================== +# +# additional check functions... +# +# ====================================================== + function checkInputArgs(Pr,ss) + + ## check if Pr has correct format + if !isreal(Pr) | (size(Pr,2)!=2) + error("Input ranges must be a two column matrix!") + endif + if any(Pr(:,1) > Pr(:,2)) # check if numbers in the second column are larger as in the first one + error("Input ranges has values in the second column larger as in the same row of the first column.") + endif + + ## check if ss has correct format, must be a scalar value + if ( (size(ss,1)!=1) || (size(ss,2)!=1)) + error("Layer sizes is not a scalar value.") + endif + + endfunction + +# ======================================================== + + +endfunction \ No newline at end of file