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



Reply via email to