about summary refs log tree commit diff
path: root/sourcecodes/bnt-master/netlab3.3/demmlp1.m
diff options
context:
space:
mode:
authorziejd22017-09-28 15:04:40 -0500
committerziejd22017-09-28 15:04:40 -0500
commit8070dc963753142bb86c4ed698d91fd623ed28e7 (patch)
treed0f6dd8fc46a49b819aa55c1a90faa14d8448883 /sourcecodes/bnt-master/netlab3.3/demmlp1.m
parent7cc31810d53176e805532b2789955f4eedbce6bb (diff)
downloadBNW-8070dc963753142bb86c4ed698d91fd623ed28e7.tar.gz
BNW using Octave instead of Matlab.
This version of BNW should perform the same as the original version. The only difference is that it uses Octave instead of Matlab when running BayesNet Toolbox during parameter learning.

I am calling this BNW_1.02. It can be accessed at:
compbio.uthsc.edu/BNW_1.02
Diffstat (limited to 'sourcecodes/bnt-master/netlab3.3/demmlp1.m')
-rw-r--r--sourcecodes/bnt-master/netlab3.3/demmlp1.m88
1 files changed, 88 insertions, 0 deletions
diff --git a/sourcecodes/bnt-master/netlab3.3/demmlp1.m b/sourcecodes/bnt-master/netlab3.3/demmlp1.m
new file mode 100644
index 00000000..4f102b73
--- /dev/null
+++ b/sourcecodes/bnt-master/netlab3.3/demmlp1.m
@@ -0,0 +1,88 @@
+%DEMMLP1 Demonstrate simple regression using a multi-layer perceptron
+%
+%	Description
+%	The problem consists of one input variable X and one target variable
+%	T with data generated by sampling X at equal intervals and then
+%	generating target data by computing SIN(2*PI*X) and adding Gaussian
+%	noise. A 2-layer network with linear outputs is trained by minimizing
+%	a  sum-of-squares error function using the scaled conjugate gradient
+%	optimizer.
+%
+%	See also
+%	MLP, MLPERR, MLPGRAD, SCG
+%
+
+%	Copyright (c) Ian T Nabney (1996-2001)
+
+
+% Generate the matrix of inputs x and targets t.
+
+ndata = 20;			% Number of data points.
+noise = 0.2;			% Standard deviation of noise distribution.
+x = [0:1/(ndata - 1):1]';
+randn('state', 1);
+t = sin(2*pi*x) + noise*randn(ndata, 1);
+
+clc
+disp('This demonstration illustrates the use of a Multi-Layer Perceptron')
+disp('network for regression problems.  The data is generated from a noisy')
+disp('sine function.')
+disp(' ')
+disp('Press any key to continue.')
+pause
+
+% Set up network parameters.
+nin = 1;			% Number of inputs.
+nhidden = 3;			% Number of hidden units.
+nout = 1;			% Number of outputs.
+alpha = 0.01;			% Coefficient of weight-decay prior. 
+
+% Create and initialize network weight vector.
+
+net = mlp(nin, nhidden, nout, 'linear', alpha);
+
+% Set up vector of options for the optimiser.
+
+options = zeros(1,18);
+options(1) = 1;			% This provides display of error values.
+options(14) = 100;		% Number of training cycles. 
+
+clc
+disp(['The network has ', num2str(nhidden), ' hidden units and a weight decay'])
+disp(['coefficient of ', num2str(alpha), '.'])
+disp(' ')
+disp('After initializing the network, we train it use the scaled conjugate')
+disp('gradients algorithm for 100 cycles.')
+disp(' ')
+disp('Press any key to continue')
+pause
+
+% Train using scaled conjugate gradients.
+[net, options] = netopt(net, options, x, t, 'scg');
+
+disp(' ')
+disp('Now we plot the data, underlying function, and network outputs')
+disp('on a single graph to compare the results.')
+disp(' ')
+disp('Press any key to continue.')
+pause
+
+% Plot the data, the original function, and the trained network function.
+plotvals = [0:0.01:1]';
+y = mlpfwd(net, plotvals);
+fh1 = figure;
+plot(x, t, 'ob')
+hold on
+xlabel('Input')
+ylabel('Target')
+axis([0 1 -1.5 1.5])
+[fx, fy] = fplot('sin(2*pi*x)', [0 1]);
+plot(fx, fy, '-r', 'LineWidth', 2)
+plot(plotvals, y, '-k', 'LineWidth', 2)
+legend('data', 'function', 'network');
+
+disp(' ')
+disp('Press any key to end.')
+pause
+close(fh1);
+clear all;