// создание сети по названию папки с эталонными изображениями, обучение сети public HammingNN(String dirname, Color baseColor) { List <List <double> > input = AlgsWithFiles.processingFilesInDirectory(dirname, AlgsWithFiles.binarImage, baseColor); K = input.Count; M = input[0].Count; this.baseColor = baseColor; outputs = new double[K]; tmpoutputs = new double[K]; weightMatrix = new double[K, M]; feedbackSynapse = new double[K][]; double eps = 1 / (1.2 * K); // инициализация матриц весовой и синапсов обр связи for (int i = 0; i < K; ++i) { for (int j = 0; j < M; ++j) { weightMatrix[i, j] = input[i][j] / 2.0; } //// feedbackSynapse[i] = new double[K]; for (int k = 0; k < K; ++k) { if (i == k) { feedbackSynapse[i][k] = 1; } else { feedbackSynapse[i][k] = -eps; } } } }
public HopfieldNN(String dirname, Color baseColor) { samples = AlgsWithFiles.processingFilesInDirectory(dirname, AlgsWithFiles.bipolImage, baseColor); this.baseColor = baseColor; int n = samples[0].Count; weightMatrix = new double[n][]; for (int i = 0; i < n; ++i) { weightMatrix[i] = new double[n]; for (int j = 0; j < n; ++j) { double sum = 0; for (int k = 0; k < samples.Count; ++k) { sum += samples[k][i] * samples[k][j]; } weightMatrix[i][j] = sum / n; } } }