I missed this but it looks like you got it sorted, yes? Using
fann_create_train_array
and taking pointers to the Julia array will save a lot of copying so is
definitely the right way to go.

On Tue, Oct 21, 2014 at 6:47 PM, Davide Lasagna <[email protected]>
wrote:

> 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