Jv Doe Ответов: 1

Помогите мне : исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException


У меня есть проблема с моим основным классом, когда я строю свой проект..

Я получаю сообщение :

Исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException: 0
на ocr.тренинге.MnistTraining.main(MnistTraining.java:22)
Результат Java: 1

Мой Java-код:

public class MnistTraining {
    
    /*
     * ARGS Organization:
     * 0 -> Number of Train Images
     * 1 -> Number of cells for HorizontalCelledProjection
     * 2 -> Number of cells for VerticalCelledProjection
     */
    public static void main(String[] args) throws IOException{ 
        int numTrainImages = new Integer(args[0]);
        double[][] actual = new double[numTrainImages][];
        double[][] ideal = new double[numTrainImages][];
        MnistManager m = new MnistManager(Config.MNIST_TRAIN_IMAGES, Config.MNIST_TRAIN_LABELS);
        
        FeatureExtraction fe = FeatureExtractionBuilder
                                .create()
                                .children(new HorizontalCelledProjection(new Integer(args[1])), 
                                          new VerticalCelledProjection(new Integer(args[2])))
                                .build();
        
        // Build Training Data
        for(int i = 1; i <= numTrainImages; ++i) {
            // Get Pixel Matrix
            m.setCurrent(i);
            int[][] image = m.readPixelMatrix();
            
            fe.setPixelMatrix(image);
            fe.compute();
            
            // Add to Training Data
            double[] idealVector = new double[Config.OUTPUT_NEURONS];
            idealVector[m.readLabel()] = 1;
            
            actual[i-1] = fe.getFeatureVector();
            ideal[i-1] = idealVector;
        }
        
        int inputNeurons = fe.getFeatureVector().length;
        int hiddenNeurons = (2/3) * inputNeurons;
        
        NeuralNetwork nn = NeuralNetworkBuilder
                                .create()
                                .inputNeurons(inputNeurons)
                                .hiddenNeurons(hiddenNeurons)
                                .outputNeurons(Config.OUTPUT_NEURONS)
                                .build();
        
        nn.trainNetwork(actual, ideal);
        
        nn.persistNetwork();
        
    }
    
}


Это проблема: строка 22

int numTrainImages = new Integer(args[0]);


Что случилось и как это решить, помогите мне... спасибо

1 Ответов

Рейтинг:
10

Sergey Alexandrovich Kryukov

Это просто означает, что ваш args объект не является нулевым, но он пуст. Ваш метод точки входа (main) получено 0 аргументов командной строки. Что же делать? Проверьте размер массива перед его индексированием.

—СА


Jv Doe

Спасибо Сергею Александровичу Крюкову за ваше решение, но я не очень хорошо знаком с тем, что вы подразумеваете под вычислением размера массива и как его индексировать. Как вы думаете, код правильный или нужно что-то добавить?

Я прошу прощения за то, что не совсем понимаю об этом, но я стараюсь продолжать учиться ..

Sergey Alexandrovich Kryukov

Допустим, вы ожидаете 1 аргумент в командной строке и хотите его использовать. Но пользователь может предоставить или не предоставить этот аргумент. Итак, вы проверяете
если (args.длина > 0) {
processCommandLineArgument(args[0]);
} еще {
// не делай этого
// сделай что-нибудь еще
}

—СА

Jv Doe

Спасибо Вам, Сергей Александрович Крюков.

Sergey Alexandrovich Kryukov

Добро пожаловать.
—СА

Member 11769199

привет ребята я работаю над распознаванием речи с помощью sphinx 4 и я пытался разработать живой интерфейс распознавания речи но java говорит об ошибке во время выполнения
"Исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException: 101"
когда я использовал маленький "myLanguageModel.lm", он также показывает ошибку
"NullPointerException" я пробовал как eclipse, так и netbeans, мои jar-файлы sphinx4-5prealpha и загружены с известного сайта sphinx. пожалуйста, помогите мне

Member 11769199

hello guys I am working on speech recognition using sphinx 4 and i tried to develop live speech recognition interface but java says at runtime error
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 101"
when i used small "myLanguageModel.lm" it also shows error
"NullPointerException" and also sometimes there is no output or results. I tried both eclipse and netbeans, my jar files are sphinx4 -5prealpha and downloaded from known site of sphinx. pls help me

Member 11769199

Sphinx4 live speech recognition interface hellonworld indexOutOfBoundException