Глава 6. Работа с данными
253
содержит признаки для батча примеров данных и аналогично аргументу
xs
метода
model.fit()
, но объект
Dataset
выдает элементы по одному батчу за раз, а не весь
массив сразу. Второе обязательное свойство называется
ys
и содержит соответ
ствующий тензор целевых признаков
1
. По сравнению с методом
model.fit()
, метод
model.fitDataset()
обладает несколькими преимуществами. Прежде всего, не нужно
писать код для общей организации скачивания частей набора данных — TensorFlow.
js берет эту задачу на себя и решает ее эффективным потоковым образом, с полу
чением данных по мере необходимости. Встроенные в объект
Dataset
кэширующие
структуры предоставляют возможность упреждающей выборки данных, которые
могут понадобиться, экономя таким образом вычислительные ресурсы. Возможно
сти этого вызова API шире и в смысле обучения наборов данных намного большего
размера, чем помещается в памяти GPU. Фактически размер набора данных для об
учения модели ограничивается теперь лишь имеющимся у нас временем — обучение
продолжается до тех пор, пока доступны новые примеры данных. Это поведение
иллюстрируется примером datagenerator из репозитория tfjsexamples.
В данном примере мы учим модель оценивать вероятность выигрыша в простой
азартной игре. Как обычно, для извлечения и запуска примера можно использовать
следующие команды:
git clone https://github.com/tensorflow/tfjs-examples.git
cd tfjs-examples/data-generator
yarn
yarn watch
Вышеупомянутая игра представляет собой упрощенную версию карточной игры,
в чемто напоминающую покер. Каждый из игроков получает по
N
карт, где
N
— по
ложительное целое число, каждой из которых соответствует случайное целое число
от 1 до 13. Правила игры следующие.
z
z
Выигрывает игрок, у которого самая большая группа карт одного достоинства.
Например, если у игрока 1 есть три карты одного достоинства, а у игрока 2 —
только две, выигрывает игрок 1.
z
z
Если у обоих игроков максимальные группы карт одного достоинства одного раз
мера, то выигрывает игрок с группой карт максимального достоинства. Например,
пара пятерок бьет пару четверок.
z
z
Если ни у одного игрока нет даже двух карт одного достоинства, выигрывает
игрок с одиночной картой максимального достоинства.
z
z
При равенстве победитель выбирается случайным образом, 50/50.
Как легко убедиться, шансы на выигрыш у обоих игроков одинаковы. Так что,
если о картах ничего не известно, угадать, выиграем мы или нет, можно лишь
в половине случаев. Мы создадим и обучим модель, которая по картам игрока 1 будет
предсказывать, выиграет ли он. На рис. 6.1 видно, что нам удалось добиться без
1
В случае моделей с несколькими входными сигналами вместо отдельных тензоров при
знаков здесь ожидается массив тензоров, аналогично случаю моделей, ориентированных
на подгонку под несколько целей.
254
Do'stlaringiz bilan baham: |