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

📄 performance.cc

📁 一个功能强大的神经网络分析程序
💻 CC
字号:
/*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*///uncomment lines below to benchmark the libraries#define JNEURAL#define LWNN#include <stdio.h>#include <stdlib.h>#include <string.h>#include "ctimer.h"#include "fann.h"#ifndef FIXEDFANN#ifdef JNEURAL#include "nets/backprop.h"#endif#ifdef LWNN#include "lwneuralnet.h"#endif#ifdef JNEURALvoid performance_benchmark_jneural(FILE *out, fann_type *input,	unsigned int num_neurons, unsigned int seconds_per_test){	unsigned int i, total_connections;	fann_type *output;	backprop *ann = new backprop(0.7, num_neurons, num_neurons, 2, num_neurons, num_neurons);		total_connections = (num_neurons+1) * num_neurons * 3;	start_timer();		for(i = 0; time_elapsed() < (double)seconds_per_test; i++){		ann->set_input(input);		output = ann->query_output();	}	stop_timer();	fprintf(out, "%d %.20e\n", num_neurons, getNanoPerN(i)/total_connections);	fprintf(stderr, "%d ", num_neurons);	delete ann;}#endif#ifdef LWNNvoid performance_benchmark_lwnn(FILE *out, fann_type *input,	unsigned int num_neurons, unsigned int seconds_per_test){	unsigned int i, total_connections;	fann_type *output;	output = (fann_type*)calloc(num_neurons, sizeof(fann_type));	network_t *ann = net_allocate (4, num_neurons, num_neurons, num_neurons, num_neurons);	total_connections = num_neurons * num_neurons * 3;		start_timer();		for(i = 0; time_elapsed() < (double)seconds_per_test; i++){		net_compute (ann, input, output);	}	stop_timer();	fprintf(out, "%d %.20e\n", num_neurons, getNanoPerN(i)/total_connections);	fprintf(stderr, "%d ", num_neurons);	net_free(ann);		free(output);}#endifvoid performance_benchmark_fann_noopt(FILE *out, fann_type *input,	unsigned int num_neurons, unsigned int seconds_per_test){	unsigned int i, total_connections;	fann_type *output;	struct fann *ann = fann_create(1, 0.7, 4,		num_neurons, num_neurons, num_neurons, num_neurons);	//just to fool the optimizer into thinking that the network is not fully connected	ann->connection_rate = 0.9;		total_connections = (num_neurons+1) * num_neurons * 3;			start_timer();		for(i = 0; time_elapsed() < (double)seconds_per_test; i++){		output = fann_run(ann, input);	}	stop_timer();	fprintf(out, "%d %.20e\n", num_neurons, getNanoPerN(i)/total_connections);	fprintf(stderr, "%d ", num_neurons);	fann_destroy(ann);	}void performance_benchmark_fann_thres(FILE *out, fann_type *input,	unsigned int num_neurons, unsigned int seconds_per_test){	unsigned int i, total_connections;	fann_type *output;	struct fann *ann = fann_create(1, 0.7, 4,		num_neurons, num_neurons, num_neurons, num_neurons);	fann_set_activation_function_hidden(ann, FANN_THRESHOLD);	fann_set_activation_function_output(ann, FANN_THRESHOLD);		total_connections = (num_neurons+1) * num_neurons * 3;			start_timer();		for(i = 0; time_elapsed() < (double)seconds_per_test; i++){		output = fann_run(ann, input);	}	stop_timer();	fprintf(out, "%d %.20e\n", num_neurons, getNanoPerN(i)/total_connections);	fprintf(stderr, "%d ", num_neurons);	fann_destroy(ann);	}#endifvoid performance_benchmark_fann(bool stepwise, FILE *out, fann_type *input,	unsigned int num_neurons, unsigned int seconds_per_test){	unsigned int i, total_connections;	fann_type *output;	struct fann *ann = fann_create(1, 0.7, 4,		num_neurons, num_neurons, num_neurons, num_neurons);	if(stepwise){		fann_set_activation_function_hidden(ann, FANN_SIGMOID_STEPWISE);		fann_set_activation_function_output(ann, FANN_SIGMOID_STEPWISE);	}else{		fann_set_activation_function_hidden(ann, FANN_SIGMOID);		fann_set_activation_function_output(ann, FANN_SIGMOID);	}	total_connections = (num_neurons+1) * num_neurons * 3;			start_timer();		for(i = 0; time_elapsed() < (double)seconds_per_test; i++){		output = fann_run(ann, input);	}	stop_timer();	fprintf(out, "%d %.20e\n", num_neurons, getNanoPerN(i)/total_connections);	fprintf(stderr, "%d ", num_neurons);	fann_destroy(ann);	}int main(int argc, char* argv[]){	/* parameters */	unsigned int num_neurons_first;	unsigned int num_neurons_last;	double multiplier;	unsigned int seconds_per_test;	FILE *out;	fann_type *input;	unsigned int num_neurons, i;		if(argc != 7){		printf("usage %s net file_out num_neurons_first num_neurons_last multiplier seconds_per_test\n", argv[0]);		return -1;	}	calibrate_timer();		num_neurons_first = atoi(argv[3]);	num_neurons_last = atoi(argv[4]);	multiplier = atof(argv[5]);	seconds_per_test = atoi(argv[6]);	if(strlen(argv[2]) == 1 && argv[2][0] == '-'){		out = stdout;	}else{		out = fopen(argv[2], "w");	}		fprintf(stderr, "Performance test of %s %s ", argv[1], argv[2]);	input = (fann_type*)calloc(num_neurons_last, sizeof(fann_type));	for(i = 0; i < num_neurons_last; i++){		input[i] = fann_random_weight(); //fill input with random variables	}		for(num_neurons = num_neurons_first;		num_neurons <= num_neurons_last; num_neurons = (int)(num_neurons * multiplier)){#ifndef FIXEDFANN		if(strcmp(argv[1], "fann") == 0){#endif			performance_benchmark_fann(false, out, input,				num_neurons, seconds_per_test);#ifndef FIXEDFANN		}else if(strcmp(argv[1], "fann_noopt") == 0){			performance_benchmark_fann_noopt(out, input,				num_neurons, seconds_per_test);		}else if(strcmp(argv[1], "fann_stepwise") == 0){			performance_benchmark_fann(true, out, input,				num_neurons, seconds_per_test);		}else if(strcmp(argv[1], "fann_thres") == 0){			performance_benchmark_fann_thres(out, input,				num_neurons, seconds_per_test);#ifdef LWNN		}else if(strcmp(argv[1], "lwnn") == 0){			performance_benchmark_lwnn(out, input,			  num_neurons, seconds_per_test);#endif#ifdef JNEURAL		}else if(strcmp(argv[1], "jneural") == 0){			performance_benchmark_jneural(out, input,				num_neurons, seconds_per_test);#endif		}else{			printf("unrecognized option %s\n", argv[1]);		}#endif	}	fprintf(stderr, "\n");	free(input);		return 0;}

⌨️ 快捷键说明

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