Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- public class Main {
- public static void main(String[] args) {
- String V = "11000110001100011000100100";
- // String A = "10010011011100011111110001";
- // String S = "11111110000100010000110001";
- // String I = "11111100100001000010000100";
- // String N = "10010001010010100101000100";
- String LastName[] = {V};
- int k = 0, K = 5;
- int y; // ответ нейрона
- int Esum = 1; //начальная суммарная ошибка
- double sum = 0; //сумма ошибок
- int m = 0; //номер эпохи обучения
- int emax = 60; //максимальное число эпох обучения
- int popSize = 20; // размер популяции
- int newPersonCount = 5;
- int porog = 0; //порог активации
- double v = 0.01;
- double weight[][] = new double[popSize][26];
- int popDev[] = new int[popSize];
- int t[][]= {{1,0,0,0,0}};
- //int t[][]= {{1,0,0,0,0}, {0,1,0,0,0}, {0,0,1,0,0}, {0,0,0,1,0}, {0,0,0,0,1}};
- for (int i = 0; i < popSize; i++) {
- for (int j = 0; j < 26; j++) {
- weight[i][j] = Math.random()*10 - 5;
- }
- }
- while (Esum!=0){
- Esum = 0; //обнуление суммарной ошибки эпохи
- System.out.println("Номер эпохи: " + m);
- for (k = 0; k < emax; k++) {
- System.out.println("Выходной вектор: ");
- for (int i = 0; i < LastName.length; i++) {
- sum = 0;
- for (int popJ = 0; popJ < popSize; popJ++) {
- for (int j = 0; j < 26; j++) {
- sum += (LastName[i].charAt(j) - 48) * weight[popJ][j];
- }
- if (sum >= porog) {
- y = 1;
- }
- else{
- y = 0;
- }
- popDev[popJ] += Math.abs(t[LastName.length][i] - y); // выводим ошибку
- System.out.print(y + " ");
- }
- // for (int l = 0; l < 26; l++) {
- // weight[k][l] += v * (t[k][i] - y) * (LastName[i].charAt(l) - 48);
- // }
- }
- System.out.println();
- System.out.println("Суммарная ошибка: " + Esum);
- }
- m++;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement