sumit
2007-03-19 10:19:00 UTC
Hi
I am making a simple OCR using FANN.
I read that instead of feeding 0,1 in neural network for binary image use
-1,1 ....... I did so .
I am attaching my code below
#include <stdio.h>
#include "fann.h"
int FANN_API test_callback(struct fann *ann, struct fann_train_data *train,
unsigned int max_epochs, unsigned int epochs_between_reports,
float desired_error, unsigned int epochs)
{
printf("Epochs %8d. MSE: %.5f. Desired-MSE: %.5f\n", epochs,
fann_get_MSE(ann), desired_error);
return 0;
}
int main()
{
fann_type *calc_out;
const unsigned int num_input = 625; /./25*25
const unsigned int num_output = 33; //7+26
const unsigned int num_layers = 2;
const unsigned int num_neurons_hidden = 80;
const float desired_error = (const float) 0;
const unsigned int max_epochs = 1000;
const unsigned int epochs_between_reports = 10;
struct fann *ann;
struct fann_train_data *data;
printf("Creating network.\n");
ann = fann_create_standard(num_layers, num_input, num_neurons_hidden,
num_output);
data = fann_read_train_from_file("captcha.data");
fann_set_activation_steepness_hidden(ann, 1);
fann_set_activation_steepness_output(ann, 1);
fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output(ann, FANN_SIGMOID_SYMMETRIC);
fann_set_train_stop_function(ann, FANN_STOPFUNC_BIT);
fann_set_bit_fail_limit(ann, 0.01f);
fann_init_weights(ann, data);
printf("Training network.\n");
fann_train_on_data(ann, data, max_epochs, epochs_between_reports,
desired_error);
printf("Testing network. %f\n", fann_test_data(ann, data));
for(int i = 0; i < fann_length_train_data(data); i++)
{
calc_out = fann_run(ann, data->input[i]);
printf("XOR test (%f,%f) -> %f, should be %f, difference=%f\n",
data->input[i][0], data->input[i][1], calc_out[0],
data->output[i][0],
fann_abs(calc_out[0] - data->output[i][0]));
}
printf("Saving network.\n");
fann_save(ann, "captcha.net");
printf("Cleaning up.\n");
fann_destroy_train(data);
fann_destroy(ann);
return 0;
}
I am getting very bad result in recognition .
How to get better result in recognition ??????
Plz provide suggestion regarding no. of hidden layers and and neurons in
hidden layers too.
How to add more than one hidden layers ?????
Thanks
I am making a simple OCR using FANN.
I read that instead of feeding 0,1 in neural network for binary image use
-1,1 ....... I did so .
I am attaching my code below
#include <stdio.h>
#include "fann.h"
int FANN_API test_callback(struct fann *ann, struct fann_train_data *train,
unsigned int max_epochs, unsigned int epochs_between_reports,
float desired_error, unsigned int epochs)
{
printf("Epochs %8d. MSE: %.5f. Desired-MSE: %.5f\n", epochs,
fann_get_MSE(ann), desired_error);
return 0;
}
int main()
{
fann_type *calc_out;
const unsigned int num_input = 625; /./25*25
const unsigned int num_output = 33; //7+26
const unsigned int num_layers = 2;
const unsigned int num_neurons_hidden = 80;
const float desired_error = (const float) 0;
const unsigned int max_epochs = 1000;
const unsigned int epochs_between_reports = 10;
struct fann *ann;
struct fann_train_data *data;
printf("Creating network.\n");
ann = fann_create_standard(num_layers, num_input, num_neurons_hidden,
num_output);
data = fann_read_train_from_file("captcha.data");
fann_set_activation_steepness_hidden(ann, 1);
fann_set_activation_steepness_output(ann, 1);
fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output(ann, FANN_SIGMOID_SYMMETRIC);
fann_set_train_stop_function(ann, FANN_STOPFUNC_BIT);
fann_set_bit_fail_limit(ann, 0.01f);
fann_init_weights(ann, data);
printf("Training network.\n");
fann_train_on_data(ann, data, max_epochs, epochs_between_reports,
desired_error);
printf("Testing network. %f\n", fann_test_data(ann, data));
for(int i = 0; i < fann_length_train_data(data); i++)
{
calc_out = fann_run(ann, data->input[i]);
printf("XOR test (%f,%f) -> %f, should be %f, difference=%f\n",
data->input[i][0], data->input[i][1], calc_out[0],
data->output[i][0],
fann_abs(calc_out[0] - data->output[i][0]));
}
printf("Saving network.\n");
fann_save(ann, "captcha.net");
printf("Cleaning up.\n");
fann_destroy_train(data);
fann_destroy(ann);
return 0;
}
I am getting very bad result in recognition .
How to get better result in recognition ??????
Plz provide suggestion regarding no. of hidden layers and and neurons in
hidden layers too.
How to add more than one hidden layers ?????
Thanks
--
Sumit
Sumit