Fannj:内存访问无效

时间:2016-10-07 18:58:18

标签: java neural-network fann fannj

你可以帮我解决这个错误,我用Fannj创建了神经网络。 Fannj是与FANN(快速人工神经网络C库)的Java绑定。

我的代码:

Layer l1 = new Layer();
l1.create(1, ActivationFunction.FANN_SIGMOID_SYMMETRIC);
Layer l2 = new Layer();
l2.create(1, ActivationFunction.FANN_SIGMOID_SYMMETRIC);
Layer l3 = new Layer();
l3.create(1, ActivationFunction.FANN_SIGMOID_SYMMETRIC);
List<Layer> list = new ArrayList<Layer>();
list.add(l1);
list.add(l2);
list.add(l3);
Fann fannT = new Fann( list);

错误:

Exception in thread "main" java.lang.Error: Invalid memory access
at com.googlecode.fannj.Fann.fann_create_standard_array(Native Method)
at com.googlecode.fannj.Fann.<init>(Fann.java:92)
at m.nieco.suns.zadanie01.Main.main(Main.java:34)

我使用了https://github.com/krenfro/fannj

1 个答案:

答案 0 :(得分:1)

以下是您要调用的构造函数的代码(来自GitHub):

public Fann(List<Layer> layers) {
    if (layers == null)
        throw new IllegalArgumentException("layers == null");
    if (layers.isEmpty())
        throw new IllegalArgumentException("layers is empty");

    int[] neurons = new int[layers.size()];
    for (int x = 0; x < neurons.length; x++)
        neurons[x] = layers.get(x).size();

    ann = fann_create_standard_array(neurons.length, neurons);
    addLayers(layers);
}

调用本机方法时发生错误
ann = fann_create_standard_array(neurons.length, neurons);

由于参数列表似乎没有问题,并且此时它唯一使用的是列表的大小和每个列表元素的getSize()值,我的赌注是在一个bug中图书馆。

如果您在GitHub issue tracker for Fann发布错误报告,则更有可能获得帮助。