Hi all, I am currently working on Neural Networks and I wanted to wrap the FANN C library <http://leenissen.dk/fann/wp/> using Julia. I just started my work so things are spread around in bits and pieces. I have first wrapped the library using Clang.jl to automatically generate the Julia wrappers from the headers. I then started to create a wrapper code around a C struct which will contain references to the training data, and immediately had an issue.
I moved the relevant part of my code to this gist <https://gist.github.com/gasagna/ba8c39c8f8ad63fd1d6d>. In data.jl, the fann_train_data is a julia type created by Clang and contains two pointers to pointers for the input and output data for the training. The rest of data.jl contains the definition of the DataSet type, which will be the central part of the package. As you can see, at line 42 a ccall to fann_create_train in libfann (defined elsewhere) is made (with success). This call (see here <http://leenissen.dk/fann/html/files/fann_train-h.html#fann_create_train>) initialises the struct and performs the allocation. The following lines, from 48 to 52, is where is am lost, due to my limited experience with wrapping C from Julia, (and with Julia). What I basically want to achieve is to create, for both the input and the output, a pointer to pointers pointing to the memory address of the relevant elements in X and y, which are user data, (sorry for the two many point*). In this way I do not have to make copies of the data, but just store some pointer. The second file example.jl demonstrates the issue. For some simple inputs and outputs, I first create the dataset (line 9) and then try to read the data that has been passed to the C struct. As explained in the gist, I am unable to read the same data that was written, and I am thus unable to train a network on that data. Can you please give me some advice on how to proceed further, I might just have taken the wrong way. I might have forgotten to say something here, so please ask further details. Cheers, Davide
