Java FanJ:无效的内存访问

Java FanJ:无效的内存访问,java,neural-network,fann,fannj,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(

嗨,有人能帮我解决这个错误吗?我用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);
层l1=新层();
l1.创建(1,ActivationFunction.FANN\u SIGMOID\u对称);
层l2=新层();
l2.创建(1,ActivationFunction.FANN\u SIGMOID\u对称);
层l3=新层();
l3.创建(1,激活函数。扇形对称);
列表=新的ArrayList();
列表。添加(l1);
列表。添加(l2);
列表。添加(l3);
Fann fannT=新Fann(列表);
和错误:

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)
线程“main”java.lang中出现异常。错误:内存访问无效 在com.googlecode.fannj.Fann.Fann\u创建标准数组(本机方法) 在com.googlecode.fannj.Fann.(Fann.java:92) 位于m.nieco.suns.zadanie01.Main.Main(Main.java:34)
我使用了

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

由于参数列表似乎没有问题,而且在这一点上它只使用列表的大小和每个列表元素的
getSize()
值,所以我打赌库中有一个bug


如果您在上发布错误报告,您将更有可能获得帮助。

不要发布文本图像,将文本复制/粘贴到您的文章中,并以固定宽度格式化(使用编辑器中的
{}
按钮)。这看起来像:(a)您正在使用的库中有一个bug;或者(b)如何将list参数设置为
Fann()
构造函数时出错。谢谢,我修复了它。好点了吗?我想问题现在清楚了。关键是,当程序到达指令“Fann fannT=new Fann(list);”时,程序正在崩溃,错误消息是“java.lang.error:Invalid memory access”。我希望可以重新打开此主题,因为我遇到了相同的问题。如果发生这种情况,我想发布我使用的解决方案。这段代码的问题是因为“层”是静态的,应该按它来处理。最后的代码可以这样重写:List layers=new ArrayList();layers.add(Layer.create(2));layers.add(Layer.create(3,ActivationFunction.FANN_SIGMOID_对称));layers.add(Layer.create(1,ActivationFunction.FANN_SIGMOID_SYMMETRIC));Fann Fann=新Fann(层);
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);