{
train();
test();
Console.WriteLine("Правильно распознано {0}% вариантов",
100 * correctResults / TEST_ROWS_COUNT);
}
private static void train()
{
Console.WriteLine("Начало тренировки нейросети");
var indeх = 1;
var rows = File.ReadAllLines(FILE_PATH).Skip(1).Take(TRAIN_ROWS_COUNT).ToList();
foreach (var row in rows)
{
Console.WriteLine("Итерация {0} из {1}", indeх++, TRAIN_ROWS_COUNT);
var values = row.Split(',');
for (int i = 1; i < values.Length; i++)
{
var value = byte.Parse(values[i]); //var value = (values[i] == "0") ? 0 : 1;
layerAssotiations[
byte.Parse(values[0]),
(i – 1) / IMAGE_SIZE,
(i – 1) % IMAGE_SIZE]
+= value;
}
}
}
private static void test()
{
Console.WriteLine("Начало тестирования нейросети");
var indeх = 1;
var rows = File.ReadAllLines(FILE_PATH).Skip(1 + TRAIN_ROWS_COUNT).Take(TEST_ROWS_COUNT).ToList();
foreach (var row in rows)
{
Console.WriteLine("Итерация {0} из {1}", indeх++, TEST_ROWS_COUNT);
clearResultLayer();
var values = row.Split(',');
for (int i = 1; i < values.Length; i++)
{
var value = byte.Parse(values[i]);
for (int j = 0; j < SAMPLE_COUNT; j++)
{
if (value > 0)
{
var weight = layerAssotiations[
j,
(i – 1) / IMAGE_SIZE,
(i – 1) % IMAGE_SIZE];
layerResult[j] += (weight >= 0) ? weight : -INCORRECT_PENALTY;
}
}