📄 fann_data.h
字号:
/*Fast Artificial Neural Network Library (fann)Copyright (C) 2003 Steffen Nissen (lukesky@diku.dk)This library is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as published by the Free Software Foundation; eitherversion 2.1 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNULesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*/#ifndef __fann_data_h__#define __fann_data_h__#include <stdio.h>/* ----- Data structures ----- * No data within these structures should be altered directly by the user. */struct fann_neuron{ fann_type *weights; struct fann_neuron **connected_neurons; unsigned int num_connections; fann_type value;#ifdef __GNUC__}__attribute__((packed));#else};#endif/* A single layer in the neural network. */struct fann_layer{ /* A pointer to the first neuron in the layer * When allocated, all the neurons in all the layers are actually * in one long array, this is because we wan't to easily clear all * the neurons at once. */ struct fann_neuron *first_neuron; /* A pointer to the neuron past the last neuron in the layer */ /* the number of neurons is last_neuron - first_neuron */ struct fann_neuron *last_neuron;};/* The fast artificial neural network(fann) structure */struct fann{ /* The type of error that last occured. */ unsigned int errno_f; /* Where to log error messages. */ FILE *error_log; /* A string representation of the last error. */ char * errstr; /* the learning rate of the network */ float learning_rate; /* the connection rate of the network * between 0 and 1, 1 meaning fully connected */ float connection_rate; /* is 1 if shortcut connections are used in the ann otherwise 0 * Shortcut connections are connections that skip layers. * A fully connected ann with shortcut connections are a ann where * neurons have connections to all neurons in all later layers. */ unsigned int shortcut_connections; /* pointer to the first layer (input layer) in an array af all the layers, * including the input and outputlayers */ struct fann_layer *first_layer; /* pointer to the layer past the last layer in an array af all the layers, * including the input and outputlayers */ struct fann_layer *last_layer; /* Total number of neurons. * very usefull, because the actual neurons are allocated in one long array */ unsigned int total_neurons; /* Number of input neurons (not calculating bias) */ unsigned int num_input; /* Number of output neurons (not calculating bias) */ unsigned int num_output; /* Used to contain the errors used during training * Is allocated during first training session, * which means that if we do not train, it is never allocated. */ fann_type *train_errors; /* Used to choose which activation function to use Sometimes it can be smart, to set the activation function for the hidden neurons to FANN_THRESHOLD and the activation function for the output neurons to FANN_SIGMOID, in this way you get a very fast network, that is still cabable of producing real valued output. */ unsigned int activation_function_hidden, activation_function_output; /* Parameters for the activation function */ fann_type activation_steepness_hidden; fann_type activation_steepness_output; /* Training algorithm used when calling fann_train_on_.. */ unsigned int training_algorithm;#ifdef FIXEDFANN /* the decimal_point, used for shifting the fix point in fixed point integer operatons. */ unsigned int decimal_point; /* the multiplier, used for multiplying the fix point in fixed point integer operatons. Only used in special cases, since the decimal_point is much faster. */ unsigned int multiplier;#endif /* When in choosen (or in fixed point), the sigmoid function is calculated as a stepwise linear function. In the activation_results array, the result is saved, and in the two values arrays, the values that gives the results are saved. */ fann_type activation_results_hidden[6]; fann_type activation_values_hidden[6]; fann_type activation_results_output[6]; fann_type activation_values_output[6]; /* Total number of connections. * very usefull, because the actual connections * are allocated in one long array */ unsigned int total_connections; /* used to store outputs in */ fann_type *output; /* the number of data used to calculate the mean square error. */ unsigned int num_MSE; /* the total error value. the real mean square error is MSE_value/num_MSE */ float MSE_value; /* The error function used during training. (default FANN_ERRORFUNC_TANH) */ unsigned int train_error_function; /* Variables for use with Cascade Correlation */ /* The error must change by at least this fraction of its old value to count as a significant change. NOT IMPLEMENTED YET */ /* float change_fraction; */ /* No change in this number of epochs will cause stagnation. NOT IMPLEMENTED YET */ /* unsigned int stagnation_epochs; */ /* Variables for use with Quickprop training */ /* Decay is used to make the weights not go so high */ float quickprop_decay; /* Mu is a factor used to increase and decrease the stepsize */ float quickprop_mu; /* Variables for use with with RPROP training */ /* Tells how much the stepsize should increase during learning */ float rprop_increase_factor; /* Tells how much the stepsize should decrease during learning */ float rprop_decrease_factor; /* The minimum stepsize */ float rprop_delta_min; /* The maximum stepsize */ float rprop_delta_max; /* Used to contain the slope errors used during batch training * Is allocated during first training session, * which means that if we do not train, it is never allocated. */ fann_type *train_slopes; /* The previous step taken by the quickprop/rprop procedures. Not allocated if not used. */ fann_type *prev_steps; /* The slope values used by the quickprop/rprop procedures. Not allocated if not used. */ fann_type *prev_train_slopes;};/* Structure used to store data, for use with training. */struct fann_train_data{ unsigned int errno_f; FILE *error_log; char *errstr; unsigned int num_data; unsigned int num_input; unsigned int num_output; fann_type **input; fann_type **output;};/* Structure used to store error-related information */struct fann_error{ unsigned int errno_f; FILE *error_log; char * errstr;};enum { /* Standard backpropagation incremental or online training */ FANN_TRAIN_INCREMENTAL = 0, /* Standard backpropagation batch training */ FANN_TRAIN_BATCH, /* The iRprop- training algorithm */ FANN_TRAIN_RPROP, /* The quickprop training algorithm */ FANN_TRAIN_QUICKPROP};static char const * const FANN_TRAIN_NAMES[] = { "FANN_TRAIN_INCREMENTAL", "FANN_TRAIN_BATCH", "FANN_TRAIN_RPROP", "FANN_TRAIN_QUICKPROP"};enum { /* Standard linear error function */ FANN_ERRORFUNC_LINEAR = 0, /* Tanh error function, usually better but can require a lower learning rate */ FANN_ERRORFUNC_TANH};static char const * const FANN_ERRORFUNC_NAMES[] = { "FANN_ERRORFUNC_LINEAR", "FANN_ERRORFUNC_TANH"};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -