Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Попытался понять что происходит в этом коде и много массивов полный пипец, это персептрон, но как он работает?

денгенд увпадина Ученик (68), открыт 3 недели назад
Код переписал с видео т. к. заинтересовался нейросетями, я расписал что как происходит и всё равно ничего не понял много массивов : )

Либо попробуйте ответить проще почему персептрон или нейрон так работает.
Или может тут вообще всё неправильно (тогда как работает настоящий нейрон или персептрон)
 package round1; 
//объявляем переменные
public class PerseptronNetwork {
private final int BIAS = 0;
private final int WEIGHT = 1;
private int numLayers;
private int[] sizes;

//массив размеров равнен произвольному числу размеров и слои равны длине размера
public PerseptronNetwork(int... sizes) {
this.sizes = sizes;
this.numLayers = sizes.length;
}
// массив feedforward со вложенным массивом входов
private int[] feedForward1(int[] inputs) {
// сейчас выходы ничему не равны
int[] outputs = null;
//перебор слоев i = 1 где слои это длина массива sizes = 3
for(int i = 1; i < numLayers; i++) {
//новая переменная size = sizes[размер массива = i] теперь длина 2 числа 3 и 2
int size = sizes[i];
//новая переменная z = новому массиву где int[size = sizes[размер массива = i] - но sizes равно 3 2]
int[] z = new int[size];
//новая переменная выходы = новому массиву где int[size = sizes[размер массива = i] - но sizes равно 3 2]
outputs = new int[size];
//перебор size = sizes[размер массива = i] - но sizes равно 3 2,
for(int j=0; j < size; j++) {
//вложенный цикл перебирает входы, а они равны двум нулям
for(int k=0; k < inputs.length; k++) {
//z[j] = z[j] + WEIGHT * inputs[k] умножение ширины на длину входов и к ним прибавляется z[j] где j размер массива z
z[j] += WEIGHT * inputs[k];
}
// БИАС = БИАС + z[j]
z[j] += BIAS;

/*
* if (z[j]>0) {
* outputs[j] = 1
* } else { outputs[j] = 0 }
*/
outputs[j] = z[j] > 0 ? 1 : 0;
}
//входы равны выходам
inputs = outputs;
}
//возврат выходов
return outputs;
}

public static void main(String[] args) {
//передача произовольных значений 2 3 2
PerseptronNetwork net = new PerseptronNetwork(2, 3, 2);
//передача входов 0 и 0
int[] inputs = {0, 0};
//забирают поле из другого метода передают туда 0 и 0
int[] outputs = net.feedForward1(inputs);
//перебор i из длинны выходов
for (int i = 0; i < outputs.length; i++) {
//вывод на экран, выводятся две единицы в любых случаях кроме когда все нули на входе
System.out.println(outputs[i]);
}
}




}
2 ответа
КИРИЛЛ ПРОКУРОР Ученик (172) 3 недели назад
строка outputs[j] = z[j] > 0 ? 1 : 0;
} не правельна
денгенд увпадинаУченик (68) 3 недели назад
в каком смысле?
Похожие вопросы