Ключевое слово
25 | 04 | 2025
Новости Библиотеки
Шахматы Онлайн
Welcome, Guest
Username: Password: Remember me

TOPIC: Практикум по нейронным сетям для шахмат №2

Практикум по нейронным сетям для шахмат №2 24 Март 2025 12:54 #31

  • Vladimirovich
  • Vladimirovich's Avatar
  • OFFLINE
  • Инквизитор
  • Posts: 111644
  • Thank you received: 2314
  • Karma: 112
Я не понимаю, чему можно учить сетку в задаче о неподвижном короле.
Это уровень таблиц Налимова, а они считаются целиком. До мата.
Каждому - своё.

Практикум по нейронным сетям для шахмат №2 24 Март 2025 13:03 #32

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Смотрите, Алекс. Я тут левой задней решил в Делфи вашу задачку о неподвижном короле ( у вас на почте архив с кодом). В виде эндшпильной таблицы как у Налимова. Это первый шаг для решения нашей задачи. Покрутите его у себя и давайте сформулируем чему мы хотим на основе этого решения научить нашу будущую нейросеть. Варианты есть
1. Классификатор (выиграно-не выиграно)
2. Более сложная задачка на регрессию - оценка позиции. Чем ближе к мату (если поза выиграна) тем больше ее оценка. Ну или ничья, если ничья.

Чему еще можем научить сетку?

Практикум по нейронным сетям для шахмат №2 24 Март 2025 14:44 #33

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Думный дьяк
  • Posts: 297
  • Thank you received: 13
  • Karma: 3
booot76 wrote:
В виде эндшпильной таблицы как у Налимова
Я посмотрел.
Не могли бы вы разложить по полочкам этот метод.
Мне интересно.
Но самому разобраться в вашем коде для меня сложно.
А, что касается "чему мы хотим на основе этого решения научить нашу будущую нейросеть", то мне бы хотелось так - "2. Более сложная задачка на регрессию - оценка позиции. Чем ближе к мату (если поза выиграна) тем больше ее оценка. Ну или ничья, если ничья."

Практикум по нейронным сетям для шахмат №2 24 Март 2025 15:38 #34

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Это стандартный алгоритм ретроанализа, когда эндшпиль оценивается от матовых позиций назад к самым длинным по продолжительности игры. Там же если отбросить из программы все примитивы (генератор ходов - проверки на легальность) сам ретроалгоритм у меня вроде отсилы 100 строчек кода занимает.
Состоит из 3 частей :

1. Формируем массивы с нашим эндшпилем. Их 2 : с ходом белых и ходом черных. Тут простые таблички 64 на 64 по числу клеток которые у нас могут занимать ферзь и черный король (белый же не двигается и фиксирован). На этом этапе мы просматриваем все позиции эндшпиля и выбрасываем из дальнейшего рассмотрения (помечаем специальными метками) следующие классы позиций
а) невозможные (короли не могут атаковать друг друга, ферзь при своем ходе не может уже атаковать черного короля и все фигурки должны на разных клетках стоять).
б) маты и паты (черный король при своем ходе не имеет легальных ходов)
в) "битую ничью" когда черный король может своим ходом сьесть незащищенного белого ферзя.
Все остальные позиции получают метку 0 - еще неранжированные.

2. "позиция назад с ходом белых". В каждой еще неранжированной позиции с ходом белых мы генерируем ходы белого ферзя. Если хоть один из них ведет в позицию с ходом черных где тем мат, то помечаем такую позицию меткой "позиция 1-го ранга" (мат в 1 полуход) и в следующих итерациях не рассматриваем.

3. "позиция назад с ходом черных". В каждой еще неранжированной позиции с ходом черных мы генерируем ходы черного короля. Если все из них ведут в ранее найденные позиции 1 ранга с выигрышем белых в 1 полуход , значит черные не могут избежать проигрыша и такую позицию мы помечаем меткой "позиция 2 ранга" (мат в 2 полухода).

Далее в цикле повторяем пп2 и пп3 пока на какой-то итерации не закончится процесс появления новых ранжированных позиций. Все, обрываем - эндшпиль проанализирован. Все оставшиеся неранжированные позиции - ничейные, а те кто получили меточку - позиции с кратчайшим выигрышем белых в указанное количество полуходов.

Как бы все :-). Брудно с Ландау в 1969 не то, чтобы нетленку космического масштаба сделали.

Я вам там для удобства все в процедурках оформил, подставляйте любую клетку белого короля и смотрите статистику. При короле на с3 оказывается что неранжированных позиций после отработки алгоритма не остается (нет ничейных - везед выигрыш белых) и максимальный ранг при этом у некоторых позиций (там я вывожу сколько их в каждом ранге) оказывается равным 46. То есть мат в 46 полуходов. Те самые 23 полных хода, что в книжках написано. Ради интереса посмотрите что при остальных положениях белого короля (интересны только поля с1 с2 с3 с4 и симметричные).

Ну и пример там в конце для вас как опрашивать эти таблицы. Если вдруг захотите цепочки ходов из любой позиции строить на будущее.
Last Edit: 24 Март 2025 15:49 by booot76.

Практикум по нейронным сетям для шахмат №2 24 Март 2025 15:40 #35

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
"то мне бы хотелось так - "2. Более сложная задачка на регрессию - оценка позиции. Чем ближе к мату (если поза выиграна) тем больше ее оценка. Ну или ничья, если ничья.""

Ну тогда перекурим, вы разберетесь с анатомией нейросети на примере циферок и пойдем дальше. Там уже немного :-)

Практикум по нейронным сетям для шахмат №2 26 Март 2025 19:26 #36

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Думный дьяк
  • Posts: 297
  • Thank you received: 13
  • Karma: 3
booot76 wrote:
стандартный алгоритм ретроанализа
Сегодня добавил этот алгоритм в GUI для наглядности и понимания.
User ходит за черного короля, а комп с помощью "эндшпильной таблицы" его матует.
Круто прикоснуться к знаниям, которыми делятся умные люди, такие как booot76.
Немного поколдую с этим алгоритмом и нужно переходить к нейросетям :)
Last Edit: 26 Март 2025 19:30 by alexlaw.

Практикум по нейронным сетям для шахмат №2 26 Март 2025 20:32 #37

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Хорошо мат ставит :-). Чтобы еще перед своим ходом в отдельно окне видеть все возможные свои ходы с оценкой - можно было бы пройти по всей максимальной ветке. Так-то не угадаешь сильнейшую защиту.

Практикум по нейронным сетям для шахмат №2 26 Март 2025 20:49 #38

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Если будет потом интересно то после нейросетей можем остановиться чуть подробнее на алгоритме эндшпильных таблиц. Можем генератор шахматных эндшпильных таблиц собственный поднять типа как у налимова или syzygy. В разных метриках.Учебный конечно. Без его фанатизма с индексной схемой и сжатием данных. Но даже с минимумом оптимизационных трюков 5-фигурку как нечего делать поднять можем. А то и на беспешечные 6 замахнуться.

Практикум по нейронным сетям для шахмат №2 27 Март 2025 17:09 #39

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Думный дьяк
  • Posts: 297
  • Thank you received: 13
  • Karma: 3
Начало

После разбора задачи о неприкосновенном короле с помощью "эндшпильной таблицы", интересно узнать, как подойти к этой задаче с помощью нейросети в виде -
"2. Более сложная задачка на регрессию - оценка позиции. Чем ближе к мату (если поза выиграна) тем больше ее оценка. Ну или ничья, если ничья."

Но в каком формате получить информацию об тонкостях нейросетей?
Может быть в таком.
Сначала немного теории от уважаемого booot76. (в свете поставленой выше задачи)
Потом, какая то самостоятельная практическая работа, и если возникают вопросы в свете этой работы, а они неизбежно возникнут.
Получаем ответы от лектора :)

Или есть более эффективный метод освоения материала?

Практикум по нейронным сетям для шахмат №2 28 Март 2025 09:11 #40

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Переходим от таблицы к нейросетям. Что сразу сказать : решение табличное - математически истинное. На уровне правил игры. Ничего более точного не существует и в принципе не может существовать. А решения в виде нейросетей (любые) - по определению вероятностные. Неточные. Но , зато, обладающие другими очень важными преимуществами. Всегда нужно понимать возможности инструмента, прежде чем с помощью него чего-то решить.

Что собой представляет решение задачи инструментарием нейронных сетей в общем:

1.Подготавливаем обучающую выборку, с помощью которой мы хотим неросеть научить чему-то полезному с по возможности минимальной погрешностью.
2. Разрабатываем архитектуру нейросети специально под тип нашей решаемой задачи.
3. Обучаем.
4. Замеряем.
5. Возвращаемся на пункт 1 для следующей итерации.

Практикум по нейронным сетям для шахмат №2 28 Март 2025 09:22 #41

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Теперь по нашей учебной задачи про неподвижного короля:
Обучающая выборка у нас может быть шикарная - мы уже получили истинные оценки каждой позиции эндшпиля. Уже на уровне сбора данных у нас нет методологической ошибки - только сеть после обучения свою привнесет. Так как у нас используется несколько сред разработки, то нам нужен переход из одной в другую . Лучше всего - на уровне файлика. Который Делфи после отработки оставит после себя, а питон (где будем сеть учить) подхватит и обработает. После обучения сети нужен будет переход обратно (обученную нейросеть со всеми потрохами как-то переместить в Делфи), но об этом потом :-).
Нам нужно определиться : хотим ли мы обучить сетку для каждого отдельного положения белого короля или для всех его положений на доске сразу. Второй вариант наверное предпочтительнее. Типа решаем обобщенную задачу. Тогда в моем алгоритме надо в цикле проанализировать все положения белого короля, а вывод позиций сделать общим - в единый файл.
Формат файла лучше всего текстовый (питон умеет многое в плане обработки текстов и это все прямо из коробки существует и очень вкусно для программиста). Содержимое - минимально простое : текстовые строки, где каждая строка есть данные об одной позиции. Через пробел : белый король, белый ферзь, черный король, оценка из таблицы как есть. Положения фигур - сразу в диапазоне 0..63. Для нашей задачи , наверное, нам будет лучше всего брать только позиции с ходом черных. Будущая нейросеть при оценке позиции за белых будет делать минимальный перебор на 1 полуход : сгенерирует все ходы белого ферзя, полученные позиции с ходом черных оценит нейросеткой и выберет из них лучший.

Практикум по нейронным сетям для шахмат №2 28 Март 2025 09:33 #42

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Теперь относительно теории нейросети. У нас конкретная задача на регрессию : на вход принять позицию, на выходе дать оценку в диапазоне от 0 до 1, где мы уже интерпретируем эту оценку либо как ничья (около 0) либо выигрыш и тем ближе к мату чем оценка ближе к 1.

Входные данные для сети предлагаю попробовать самые простые, похожие на которые в принципе используются и в реальных шахматных движках. У нас есть 3 фигуры на доске, каждая из которых может стоять на любой клетке от 0 до 63. Значит наш входной блок данных имеет размер 3*64=192. Где первые 64 значения - для белого короля, вторые - для белого ферзя, третьи - для черного короля. Кодируем самым простым образом "1" будет на той позиции где стоит фигура. От 0-вой до 63-ей в своем блоке. То есть : каждая позиция это блок данных длиной 192 где 3 значения - "1", а все остальные - 0.

Значения для обучения можем закодировать так : если позиция ничейна (ничья, пат или "битая ничья") то 0, если выиграна, то для матовых позиций - 1, а для остальных рангов что-то типа 1-(Rang/100). Где чем ближе к мату ранг тем ближе к 1 будет значение.

Саму архитектуру нейросетки выберем максимально похожую на ту, что используется в движках : 3 Dense слоя по формуле 256-16-1. В качестве активационной функции для всех нейронов всех слоев возьмем сигмоид. Он дает красивую кривую значений от 0 до 1.

Оптимизатор - ADAM, лоссфункция - попробуем стандартную для задач на регрессию - mse (среднеквадратичные отклонения).

Вот закодируете все на стороне питона - можем посмотреть что получится при обучении :-). Начните с файла.
Last Edit: 28 Март 2025 09:37 by booot76.

Практикум по нейронным сетям для шахмат №2 28 Март 2025 09:47 #43

  • Vladimirovich
  • Vladimirovich's Avatar
  • OFFLINE
  • Инквизитор
  • Posts: 111644
  • Thank you received: 2314
  • Karma: 112
booot76 wrote:
Формат файла лучше всего текстовый (питон умеет многое в плане обработки текстов и это все прямо из коробки существует и очень вкусно для программиста). Содержимое - минимально простое : текстовые строки, где каждая строка есть данные об одной позиции. Через пробел : белый король, белый ферзь, черный король, оценка из таблицы как есть. Положения фигур - сразу в диапазоне 0..63.
Это не самый быстрый вариант, как кажется. Но это я так :)
Для учебных целей неважно.
Каждому - своё.

Практикум по нейронным сетям для шахмат №2 28 Март 2025 09:52 #44

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Конечно. Самым быстрым вариантом (который я использую для своего движка) это создать в Делфи длл-ку, которая в несколько потоков будет обрабатывать текстовый файл, заливая данные прямо в питоновские структуры памяти. Но это уже на уровне высшего пилотажа. Ладно мне - я миллиарды позиций прогоняю в процессе обучения в несколько эпох и не могу сразу все их в памяти держать - не хватает ее, поэтому по частям обрабатываю все время. Там любое ускорения - хлебушек. А у нас тут учебная задачка на пару сотен тысяч строк обучающей выборки, которые питон один раз обработает и потом уже все в памяти будет подаваться на нейросеть. Не критично вообще. А вот руками пощупать что мы там подаем - полезно будет.

Практикум по нейронным сетям для шахмат №2 28 Март 2025 10:21 #45

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Да! Будете файлик нарезать - берите только легальные позиции. Незачем нам позиции где короли атакуют друг друга.

Практикум по нейронным сетям для шахмат №2 29 Март 2025 09:00 #46

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Думный дьяк
  • Posts: 297
  • Thank you received: 13
  • Karma: 3
booot76 wrote:
текстовые строки, где каждая строка есть данные об одной позиции. Через пробел : белый король, белый ферзь, черный король, оценка из таблицы как есть. Положения фигур - сразу в диапазоне 0..63..
Для нашей задачи , наверное, нам будет лучше всего брать только позиции с ходом черных.
Набросал пробный код (точнее вставил к код от booot76 немного кода)
Просто для теста, пока что для одного положения белого короля - с3
Warning: Spoiler! [ Click to expand ]


Возник вопрос:
А нужны ли нам заведомо ничейные позиции (при белом короле на желтых клетках)

dwg47_2025-03-29.jpg
Last Edit: 29 Март 2025 09:44 by Vladimirovich.

Практикум по нейронным сетям для шахмат №2 29 Март 2025 10:01 #47

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Думный дьяк
  • Posts: 297
  • Thank you received: 13
  • Karma: 3
alexlaw wrote:
А нужны ли нам заведомо ничейные позиции (при белом короле на желтых клетках)

Не все клетки указал :) , но суть понятна.

Практикум по нейронным сетям для шахмат №2 29 Март 2025 11:25 #48

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Пример учебный поэтому интересно посмотреть как сетка справится с заведомо ничейными положениями и вообще как она разберется в задаче.

Кстати у меня вся кодировка полей в диапазон [0..63] уже зашита в проверочную доску при инициализации. board[sq]. Но я бы вывод в файл делал бы уже после отработки всей процедуры Analyze когда эндшпиль посчитан полностью чтобы еще в одном простом цикле сразу все данные залить в файлик и перейти к следующей клетке белого короля.

Что-то типа такого :

for wq:=11 to 88 do
for bk:=11 to 88 do
if (board[wq]>=0) and (board[bk]>=0) and (b[board[wq],board[bk]]<>Broken) then
begin
string:=inttostr(board[wkingsq])+' '+inttostr(board[wq])+' '+inttostr(board[bk]) + ' ' + inttostr(b[board[wq],board[bk]]);
сохраняем в файл
end;

Практикум по нейронным сетям для шахмат №2 29 Март 2025 13:47 #49

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Думный дьяк
  • Posts: 297
  • Thank you received: 13
  • Karma: 3
booot76 wrote:
вся кодировка полей в диапазон [0..63] уже зашита в проверочную доску при инициализации. board[sq].
Сразу не сообразил :)
Конечно же уже все готово.
В бинарный вид Питон будет переводить?
Если да, то данные для обучения готовы, если Делфи будет переводить в бинарный вид, то в принципе тоже готовы.
Нужно переходить к Питону?

Практикум по нейронным сетям для шахмат №2 29 Март 2025 15:11 #50

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Думный дьяк
  • Posts: 297
  • Thank you received: 13
  • Karma: 3
Надеюсь не ошибся.
277872 строки в файле.
Warning: Spoiler! [ Click to expand ]


procedure AnalyzeSq(wkingsq:integer;var board:Tboard);
Warning: Spoiler! [ Click to expand ]


Прим.
Переправерю, похоже ошибся

Ну, конечно - надо
if (board[i]>=0) then Analyzesq(i,board);

Поспешил, теперь вроде так
Last Edit: 29 Март 2025 16:26 by alexlaw.

Практикум по нейронным сетям для шахмат №2 29 Март 2025 18:07 #51

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
В питоне лучше переводить. Все равно нам на вход нейросети нужно будет потом массивы входных данных в формате numpy подавать, а в Делфи это делать замысловато.

А да - в цикле неподвижного короля обязательно надо проверять чтобы он за пределы доски не уходил.

Практикум по нейронным сетям для шахмат №2 30 Март 2025 13:46 #52

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Думный дьяк
  • Posts: 297
  • Thank you received: 13
  • Karma: 3
Поигрался с Питоном
Warning: Spoiler! [ Click to expand ]



Warning: Spoiler! [ Click to expand ]


Нужно же будет принять данные от Делфи

PS

Можно проще
Warning: Spoiler! [ Click to expand ]


Подождем booo76, куда двигаться дальше.
Пока что почитал статью Пишем свою нейросеть: пошаговое руководство

Массив Numpy
Last Edit: 30 Март 2025 18:09 by alexlaw.

Практикум по нейронным сетям для шахмат №2 30 Март 2025 18:56 #53

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Не, ну можно и так :-)

Я предпочитаю обрабатывать по одной строке в цикле типа :

while True:
line=f.readline()
if not line:
f.close()
break
тут разбиваем строку на подстроки и убираем разделяющие пробелы
mylist=line.split()
далее не мудрствуя лукаво просто переводим подстроки в целые числа (чем они в Делфи и являлись)
wk=int(mylist[0])
wq=int(mylist[1])
bk=int(mylist[2])
res=int(mylist[3])

Ну и далее бы писал прямо в массив numpy по полученным координатам уже единички. Предварительно, конечно, сразу надо создать 2 массива (Х Y) наших входных данных и меток. Массив входных данных имеет размерность [количество строк в файле, 192] массив меток просто массив размерностью [количество строк в файле,]

Создавать массивы надо сразу заполненные нулями (чтобы потом осталось единички где надо расставить в одном массиве и дать число от 0 до 1 во втором).

Все - данные для нейросети будут готовы. Эти массивы потом сразу же в model.fit и скармливать там где надо Х и Y.
Last Edit: 30 Март 2025 19:02 by booot76.

Практикум по нейронным сетям для шахмат №2 30 Март 2025 19:01 #54

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Статья толковая, монументальная. Как лобзиком в скале средневековый замок выпилить. Полезная, безусловно, но изучать ее надо долго и обстоятельно. Пока же, чтобы вы до уровня метро в нее не закопались , просто подготовим 2 массива и на основе керас-примера про распознавание цифр смастерим сетку. Подготовьте пока эти 2 массива и перепрверьте их, чтобы в них не было ошибок. Просто глазами просмотрите чем они заполнены , чтобы в каждой строке массива данных было именно 3 единички и не более, а в массиве меток - число именно от 0 до 1.

Практикум по нейронным сетям для шахмат №2 31 Март 2025 12:44 #55

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Думный дьяк
  • Posts: 297
  • Thank you received: 13
  • Karma: 3
Теперь понятно.
Подготовил массивы
Warning: Spoiler! [ Click to expand ]


Warning: Spoiler! [ Click to expand ]



Warning: Spoiler! [ Click to expand ]


В каком виде нам нужно получить результат обучения?
Last Edit: 31 Март 2025 12:45 by alexlaw.

Практикум по нейронным сетям для шахмат №2 31 Март 2025 17:02 #56

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Выглядит все рабочим! Результат обучения обычно всегда нам нужен в виде сохраненной модели в которой мы понимаем итоговоые параметры точности и лосс-функции.

Практикум по нейронным сетям для шахмат №2 31 Март 2025 19:25 #57

  • alexlaw
  • alexlaw's Avatar
  • OFFLINE
  • Думный дьяк
  • Posts: 297
  • Thank you received: 13
  • Karma: 3
Попробовал
Warning: Spoiler! [ Click to expand ]


Не уверен, что правильно ...
Warning: Spoiler! [ Click to expand ]


результат
Warning: Spoiler! [ Click to expand ]
Last Edit: 31 Март 2025 20:24 by alexlaw.

Практикум по нейронным сетям для шахмат №2 31 Март 2025 20:52 #58

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Так! Молодцом! Теперь об неточностях :

1. Вот это - убираем вообще model.add(Flatten())
Этот слой нужен в цифрах чтобы двумерные по своей сути картинки в пикселях 28х28 преобразовать в одномерный массив. Нам это не нужно у нас и так 192 столбца без признаков иных измерений.

2. метрику возьмите вместо accuracy - mae. Первая это точность "угадывания" в моделях на распознавание. Типа сколько правильно была угадана 1 (а не 0) там где правильно именно 1. Для задач на регрессию нам нужно что-то поскучнее. Поэтому вторая метрика - средняя арифметическая общей суммарной ошибки. Чем она к 0 ближе тем наша сеть точнее.

А так... шутки шутками лосс функция стабильно уменьшается. Сеть беспрерывно учится. Гулять так гулять - поставьте 100 эпох. Или даже 200. В нашем случае мы не боимся переобучения - иных данных чем мы уже в сеть для обучения подаем в системе нет и не будет.

Практикум по нейронным сетям для шахмат №2 31 Март 2025 21:04 #59

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
Но... я так и не понял - после исправления ошибки размерности входного слоя сколько у вас в сухом остатке слоев и нейронов в сети осталось? Если только два слоя (10 и 1), то, как бы "маловато будет" и "командир, добавить бы надо" :-).

Практикум по нейронным сетям для шахмат №2 31 Март 2025 21:09 #60

  • booot76
  • booot76's Avatar
  • OFFLINE
  • Чашник
  • Posts: 94
  • Thank you received: 7
  • Karma: 4
То есть решительно настаиваем на :

model = models.Sequential()
model.add(layers.Input(shape=(x_train.shape,))) # Указываем форму входа
model.add(layers.Dense(256, activation='sigmoid'))
model.add(layers.Dense(16, activation='sigmoid'))
model.add(layers.Dense(1, activation='sigmoid'))
Moderators: Grigoriy
Рейтинг@Mail.ru

Научно-шахматный клуб КвантоФорум