Количество эпох зависит от объема обучающих данных, от сложности задачи, от размера минибатча. Обычно batch_size берут в районе нескольких десятков, а не 500. Меньше batch_size => больше минибатчей в одну эпоху => больше раз изменятся веса слоев.
Олег Петров, "как сохранить" - это вопрос конкретной библиотеки и конкретного языка. Можно как бинарный файл, можно как текстовый, можно как xml, вариантов куча, и это чисто прикладной вопрос.
Q-learning, генетические алгоритмы, алгоритм обратного распространения ошибки - это общие алгоритмы для машинного обучения, и выучить они в теории могут всё, что угодно. Что будет лучше в конкретном случае - это часто вопрос ресурсов, которые имеются для обучения; объема доступных данных; наличия прямых рук и мозгов у разработчиков. AlphaZero от DeepMind играет в шахматы значительно лучше предыдущей топового ИИ Stockfish, но там для обучения использовали вычислительные мощности гугла, которые пока что недоступны простым смертным.
Также часто вполне может быть, что рукописный алгоритм без всякого машинного обучения может работать не хуже, чем ИИ с машинным обучением. Для крестиков-ноликов, например, такой написать довольно просто. Для Flappy Bird тоже понятно как.
1. "Сохранить решение" - это не тот термин. "Сохранить" - это обычно значит скопировать на жесткий диск.
2. Q-learning выучивает таблицу [S,A] -> R (S - состояние игры, A - действие, R - награда за это действие). Если состояний много (как в шахматах), то таблица действительно получается просто огромной. Решение - давайте вместо таблицы будем хранить какую-то функцию f(S,A) = R, которая будет эту таблицу аппроксимировать. Как подобрать нужную функцию? В этом помогут нейронные сети и тот факт, что они являются универсальным аппроксиматором, то есть при должном количестве весов могут аппроксимировать любую функцию.
3. Из-за большого количества состояний возникает еще одна проблема - по какой стратегии выбирать ходы при обучении? Иначе модель легко может начать активно изучать варианты в каком-то бесполезном направлении. Например, дебюты в шахматах, когда мы крайней пешкой ходим.
Все эти проблемы были в базовом варианте решены в 2013 году командой DeepMind, которая с тех пор продолжает активно копать в этом направлении.
FoxBoost, обычно исходный датасет разбивают в некоторой пропорции (например, 80% - 20%), обучают на 80% и тестируют (т.е. запускаем сессию для accuracy без train_step) на 20%. Всё обучение состоит из периодов-"эпох", каждая из которых обучает на каком-то фиксированном количестве минибатчей и тестирует на каком-то фиксированном количестве. Логируют средние метрики за эпохи. Я обычно вывожу просто через stdout или в файл, если надо будет с кем-то поделиться.
Кроме просто accuracy в случае классификации еще одной полезной метрикой может быть precision+recall+f1 и confusion matrix. В sklearn есть соотв. методы, которым просто подсовываешь Y_true и Y_pred, и там всё считается. Вдруг окажется, что плохо определяются какие-то конкретные классы изображений?
Размеры окон в сверточных сетях обычно выбирают нечетные - потому что центральный пискель + 2*радиус окна. Но существенно это никак не должно повлиять.
Еще для дебага сети бывает полезна функция tf.Print, которая может вывести значение конкретного тензора при прогоне графа.
А если все слова, которые мы хотим находить в тексте, сохранить посимвольно в виде дерева, где каждый узел - это следующий символ в этом слове, и для некоторых есть спец. дочерний элемент, который содержит слово, на которое надо заменять? Как это называется... AST вроде бы.
И тогда для замены просто читаем исходное слово посимвольно слева направо, от каждого символа параллельно начинаем спускаться по дереву и идти по слову дальше. Если нашли полное совпадение - сохраняем индексы, по которым надо сделать замену, и слово, на которое надо заменить; перескакиваем через эти индексы и идем дальше.
kuzdman, а вы уверены, что эти скалярные значения - это не, например, расстояние от векторов слов "королева", "бургундская" и т.д. до вектора какого-то исходного слова?
Загляните внутрь .vec-файлов. Там данные типа <слово> -> <его вектор>. Надо просто открыть файл и прочитать его.
Или, может, вы вопрос неправильно сформулировали.
Например, понимание, как сохранять\загружать модели в каком-нибудь Tensorflow; как там символьный цикл написать; как связаны значения весов, граф и сессия; как дебажить программу.
Польза от предсказания стоимости билета, по-моему, точно такая же нулевая.