Fannj: неверный доступ к памяти
Привет, может кто-нибудь помочь мне с ошибкой, я использовал Fannj для создания нейронной сети. Fannj - это Java-привязки к FANN (библиотека быстрой искусственной нейронной сети C.)
Мой код:
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 ответ
Вот код для конструктора, который вы вызываете (из 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()
значение, моя ставка на ошибку в библиотеке.
Скорее всего, вы получите помощь, если опубликуете сообщение об ошибке на трекере GitHub для Fann.