Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

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

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

Либо попробуйте ответить проще почему персептрон или нейрон так работает.
Или может тут вообще всё неправильно (тогда как работает настоящий нейрон или персептрон)

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
 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]); 
		} 
	} 
		 
		 
	 
 
} 
 
По дате
По рейтингу
Аватар пользователя
8мес

пипец

Аватар пользователя
Ученик
8мес

строка outputs[j] = z[j] > 0 ? 1 : 0;
} не правельна