⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c189.html

📁 一个功能强大的神经网络分析程序
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><HTML><HEAD><TITLE>Fixed Point Usage</TITLE><link href="../style.css" rel="stylesheet" type="text/css"><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINKREL="HOME"TITLE="Fast Artificial Neural Network Library"HREF="index.html"><LINKREL="PREVIOUS"TITLE="Adjusting Parameters During Training"HREF="x184.html"><LINKREL="NEXT"TITLE="Running a Fixed Point ANN"HREF="x203.html"></HEAD><BODYCLASS="chapter"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">Fast Artificial Neural Network Library</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="x184.html"ACCESSKEY="P">Prev</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom"></TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="x203.html"ACCESSKEY="N">Next</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="chapter"><H1><ANAME="fixed"></A>Chapter 3. Fixed Point Usage</H1><P>&#13;      It is possible to run the ANN with fixed point numbers (internally represented as integers). This option is only intended for use on computers with no      floating point processor, for example, the iPAQ, but a minor performance enhancement can also be seen on most modern computers      [<AHREF="b3048.html#bib.IDS_2000"><I>IDS, 2000</I></A>].    </P><DIVCLASS="section"><H1CLASS="section"><ANAME="fixed.train">3.1. Training a Fixed Point ANN</A></H1><P>&#13;        The ANN cannot be trained in fixed point, which is why the training part is basically the same as for floating point numbers. The only difference is that	you should save the ANN as fixed point. This is done by the <AHREF="r494.html"><CODECLASS="function">fann_save_to_fixed</CODE></A>	function. This function saves a fixed point version of the ANN, but it also does some analysis, in order to find out where the decimal point should be.	The result of this analysis is returned from the function.      </P><P>&#13;	The decimal point returned from the function is an indicator of, how many bits is used for the fractional part of the fixed point numbers. If this number	is negative, there will most likely be integer overflow when running the library with fixed point numbers and this should be avoided. Furthermore, if	the decimal point is too low (e.g. lower than 5), it is probably not a good idea to use the fixed point version.      </P><P>&#13;	Please note, that the inputs to networks that should be used in fixed point should be between -1 and 1.      </P><DIVCLASS="example"><ANAME="example.train_fixed"></A><P><B>Example 3-1. An example of a program written to support training in both fixed point and floating point numbers</B></P><PRECLASS="programlisting">&#13;#include "fann.h"#include &#60;stdio.h&#62;int main(){	fann_type *calc_out;	const float connection_rate = 1;	const float learning_rate = 0.7;	const unsigned int num_input = 2;	const unsigned int num_output = 1;	const unsigned int num_layers = 3;	const unsigned int num_neurons_hidden = 4;	const float desired_error = 0.001;	const unsigned int max_iterations = 20000;	const unsigned int iterations_between_reports = 100;	struct fann *ann;	struct fann_train_data *data;		unsigned int i = 0;	unsigned int decimal_point;	printf("Creating network.\n");	ann = fann_create(connection_rate, learning_rate, num_layers,		num_input,		num_neurons_hidden,		num_output);	printf("Training network.\n");	data = fann_read_train_from_file("xor.data");	fann_train_on_data(ann, data, max_iterations, iterations_between_reports, desired_error);	printf("Testing network.\n");	for(i = 0; i &#60; data-&#62;num_data; i++){		calc_out = fann_run(ann, data-&#62;input[i]);		printf("XOR test (%f,%f) -&#62; %f, should be %f, difference=%f\n",		data-&#62;input[i][0], data-&#62;input[i][1], *calc_out, data-&#62;output[i][0], fann_abs(*calc_out - data-&#62;output[i][0]));	}		printf("Saving network.\n");	fann_save(ann, "xor_float.net");	decimal_point = fann_save_to_fixed(ann, "xor_fixed.net");	fann_save_train_to_fixed(data, "xor_fixed.data", decimal_point);		printf("Cleaning up.\n");	fann_destroy_train(data);	fann_destroy(ann);		return 0;}	</PRE></DIV></DIV></DIV><DIVCLASS="NAVFOOTER"><HRALIGN="LEFT"WIDTH="100%"><TABLESUMMARY="Footer navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top"><AHREF="x184.html"ACCESSKEY="P">Prev</A></TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="index.html"ACCESSKEY="H">Home</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top"><AHREF="x203.html"ACCESSKEY="N">Next</A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">Adjusting Parameters During Training</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top">&nbsp;</TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">Running a Fixed Point ANN</TD></TR></TABLE></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -