-1

嗨,有人可以帮我解决这个错误,我使用 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

4

1 回答 1

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()值,所以我的赌注是库中的一个错误。

如果您在Fann 的 GitHub 问题跟踪器上发布错误报告,您更有可能获得帮助。

于 2016-10-07T19:27:37.917 回答