Hallo
Ich habe ein Programm geschrieben das die libfann verwendet. Leider verursacht das Programm immer an der gleichen Stelle einen Segfault. Von libfann erhalte ich zwei Pointer auf Arrays (input, output). Beim Zugriff darauf gibt es einen Segfault Ich habe bereits mit GDB/DDD versucht den Fehler zu finden. Dabei bin ich soweit gekommen, dass ich sagen würde, dass irgendwo etwas mit den durch libfann bereitgestellten Daten nicht stimmt. Aber leider/zum Glück täuscht man sich da ja meistens...
Damit man sich mehr unter dem Code vorstellen kann hier noch ein paar Links:
Die verwendete Funktion (fann_create_train_from_callback): http://leenissen.dk/fann/html/files/fann_train-h.html#fann_create_train_from_callback
Der Quellcode der Funktion: http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/natty/libfann/natty/view/head:/src/fann_train_data.c#L101
Schonmal danke für ein paar Ideen woran es liegen könnte.
Gruß jan-bart
Minimal Beispiel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <stdio.h> #include <doublefann.h> #define INPUT_HEIGHT 100 #define INPUT_WIDTH 100 #define OUTPUT_HEIGHT 50 #define OUTPUT_WIDTH 50 #define NUM_INPUT INPUT_HEIGHT*INPUT_WIDTH #define NUM_OUTPUT OUTPUT_HEIGHT*OUTPUT_WIDTH void data_store(unsigned int num, unsigned int num_input, unsigned int num_output, fann_type* input, fann_type* output) { int i = 0; for(i = 0; i < num_input; i++) { input[i] = (fann_type)1.0; } for(i = 0; i < num_output; i++) { output[i] = (fann_type)1.0; } } int main(int argc, char* argv[]) { struct fann_train_data* data; data = fann_create_train_from_callback(1, NUM_INPUT, NUM_OUTPUT, &data_store); fann_destroy_train(data); return 0; } |