Задать вопрос
BitNeBolt
@BitNeBolt

Почему не удается выполнить прямое распространение сигнала?

Нужно сделать прямое распространение сигнала сети. В качестве самой сети я использую массив массивов нейронов (каждый вложенный массив представляет из себя слой сети).
Вот
public void forwardPropagation(ArrayList<Double> inputData)
    {
        int layersCount = neuronLayers.size();

        for (int i = 0; i < layersCount; i++)
        {
            ArrayList<Neuron> layer = neuronLayers.get(i);

            //если первый, входной слой
            if (i == 0)
                for (int j = 0; j < layer.size(); j++)
                {
                    Neuron neuron = layer.get(j);
                    neuron.neuronValue = inputData.get(j);

                    layer.set(j, neuron);
                }

            else
            {
                ArrayList<Neuron> prevLayer = neuronLayers.get(i-1);

                for (int j = 0; j < layer.size(); j++)
                {
                    Neuron neuron = layer.get(j);

                    double sum = 0;

                    for (int k = 0; k < neuron.inputWeights.size(); k++)
                    {
                        Neuron prevNeuron = prevLayer.get(k);
                        sum += prevNeuron.neuronValue * neuron.inputWeights.get(k);
                    }

                    neuron.neuronValue = neuron.activate(sum);
                    layer.set(j, neuron);
                }
            }

            this.neuronLayers.set(i, layer);
        }
    }
функция для прямого распространения.

Когда я хочу узнать ответ, то я возвращаю последний слой сети (в отдельном методе) и вывожу эти значения. Проблема в том, что в независимости от входных данных, сеть выдает один и тот же ответ. Когда я решил просмотреть значения нейронов, то выяснил, что значения входного слоя не соответствуют входным данным, думаю, что проблема в этом.

Почему не присваиваются значения входному слою?

P.S. Код нейрона могу выложить по просьбе
  • Вопрос задан
  • 54 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@DDwrt100
что из себя представляет переменная ?
neuronLayers
Ответ написан
BitNeBolt
@BitNeBolt Автор вопроса
Код верный, ошибка в другом месте "проекта".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы