Из этой статьи вы узнаете, как начать работу с tenorflow.js, также известным как tfjs - не очень популярный брат Tensorflow.
TensorFlow.js - это фреймворк для определения и выполнения вычислений с использованием тензоров в JavaScript. Проще говоря, TensorFlow.js - это библиотека JavaScript для обучения и развертывания моделей машинного обучения в браузере и в Node.js.
Это позволяет разработчику добавлять возможности машинного обучения в любое веб-приложение. С TensorFlow.js вы можете разрабатывать сценарии машинного обучения с нуля. Вы можете использовать API-интерфейсы для создания и обучения моделей прямо в браузере или в своем серверном приложении Node.js.
Честно говоря, на момент написания этой статьи я просто знал основы HTML, CSS и JavaScript. Так что, если вы не знаете о них, все будет в порядке.
«Код - это единственный способ научиться программировать»
Вы можете начать с кода напрямую. Однако необходимы базовые знания TensorFlow и нейронных сетей.
Давайте начнем.
Шаг 1. Создайте index.html
Создайте простой index.html и откройте его с помощью блокнота или любой IDE.
Шаг 2. Определите HTML-страницу
Создайте свою веб-страницу внутри index.html, довольно простой вид:
<html> <head></head> <body> <h1>Hello World</h1> </body> </html>
Шаг 3. Загрузите TensorFlow.js
Чтобы загрузить файл TensorFlow.js, добавьте
<script src=”https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest"></script>
между ‹/head› и ‹body›.
Шаг 4. Определите свою модель.
Мы будем строить модель, чтобы найти взаимосвязь между двумя числами, в нашем случае это будет y = 2x-1.
Добавьте этот тег сценария под предыдущим тегом сценария и над тегом тела:
<script lang=”js”> const model = tf.sequential(); model.add(tf.layers.dense({units: 1, inputShape: [1]})); model.compile({loss:’meanSquaredError’, optimizer:’sgd’}); model.summary(); </script>
Первая строка говорит о том, что ваша модель последовательна. Затем мы определяем простейшую возможную нейронную сеть с одним плотным слоем, состоящим из одного нейрона. Поскольку мы используем линейную зависимость между x и y, следующая строка компилирует модель с использованием функции потерь - среднеквадратичной ошибки и оптимизатора, стохастического градиентного спуска.
Затем мы выведем model.summary, и позже мы сможем увидеть это в консоли.
Шаг 5. Импортируйте данные
Добавьте эти строки кода под model.summary (), чтобы добавить данные, которые будут обучать нейронную сеть.
const xs = tf.tensor2d([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], [6, 1]); const ys = tf.tensor2d([-3.0, -1.0, 2.0, 3.0, 5.0, 7.0], [6, 1]);
У нас нет NumPy в JavaScript, поэтому мы используем tf.tensor2d для определения массива, и у вас есть двухмерный массив или два одномерных массива.
Эти tenor2ds будут иметь два измерения, первое измерение - это сами данные. Как видите, это шесть элементов данных и одномерный массив. Наш второй элемент tensor2d является его спецификацией. Мы говорим ему, что у нас есть одномерный массив с шестью элементами. Мы делаем то же самое для Ys. Если вы измените размер первого массива, не забудьте изменить форму, указанную во втором массиве.
Здесь xs и ys имеют отношение y = 2x-1, и когда мы введем это в нашу нейронную сеть, она сделает это автоматически.
Шаг 6. Обучите свою модель
В JavaScript мы определяем метод doTraining () для обучения модели:
async function doTraining(model){ const history = await model.fit(xs, ys, { epochs: 500, callbacks:{ onEpochEnd: async(epoch, logs) =>{ console.log(“Epoch:” + epoch + “ Loss:” + logs.loss);} } }); }
Это научит нашу нейронную сеть подгонять наши X к нашим Y, чтобы попытаться вывести правила между ними. В данном случае Y равно X минус 1. Это входит во второй тег скрипта и в любом месте выше метода прогнозирования.
doTraining - это асинхронная функция, асинхронная функция, что означает, что сценарий будет выполняться, пока страница продолжает синтаксический анализ.
Мы выбрали асинхронный тип функции для doTraining, потому что обучение занимает неопределенное время, и мы не хотим блокировать этим браузер. Как только функция будет выполнена, она перезвонит нам.
Задача этой асинхронной функции - провести обучение модели, а затем обучение модели будет ожидать возврата из model.fit.
Model.fit просто сопоставляет X с Y, он делает это для 500 эпох и определяет набор обратных вызовов. Эпохи и обратные вызовы определяются как смежные списки, в отличие от Python, где обратный вызов был классом.
Само определение обратного вызова - это список с элементом списка в конце эпохи, который определяется как функция. В этом случае в конце эпохи получает номер эпохи и журналы в качестве параметров. Так что я могу распечатать эпоху и потери для этой эпохи.
Шаг 6 - Прогноз
Когда модель обучена и она вызывает метод doTraining (), мы можем делать прогноз, используя:
doTraining(model).then(() => { alert(model.predict(tf.tensor2d([10], [1,1]))); });
Это записывается во втором теге скрипта после кода doTraining (), слоев данных и модели.
Когда doTraining () завершается, автоматически вызывается model.predict для прогнозирования значения y, если x равно 10.
Обратите внимание, что для определения массива в JavaScript мы должны использовать tenor2d каждый раз, и, следовательно, здесь, чтобы проанализировать 10 в модели, мы должны преобразовать его в тензор.
Шаг 7. Запустите index.html
Наконец, запустите свой html-файл в браузере, и вы сможете увидеть отзыв об обучении, нажав Ctrl + Shift + I, Инструменты разработчика ›Консоль. После обучения появится окно предупреждения, которое представляет собой предполагаемое значение y, если x равно 10. Это не будет 19, потому что мы возвращаем тензор.
Результат выглядит следующим образом:
Полный код:
<html> <head></head> <script src=”https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest"> </script> <script lang=”js”> async function doTraining(model){ const history = await model.fit(xs, ys, { epochs: 500, callbacks:{ onEpochEnd: async(epoch, logs) =>{ console.log(“Epoch:” + epoch + “ Loss:” + logs.loss);} } }); } const model = tf.sequential(); model.add(tf.layers.dense({units: 1, inputShape: [1]})); model.compile({loss:’meanSquaredError’, optimizer:’sgd’}); model.summary(); const xs = tf.tensor2d([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], [6, 1]); const ys = tf.tensor2d([-3.0, -1.0, 2.0, 3.0, 5.0, 7.0], [6, 1]); doTraining(model).then(() => { alert(model.predict(tf.tensor2d([10], [1,1]))); }); </script> <body> <h1>Hello World</h1> </body> </html>
Поздравляем вас с первой моделью машинного обучения на основе браузера или с вашей первой моделью машинного обучения.
Прежде чем ты уйдешь:
- Нажмите 👏, если точность вашей модели выше 85%: P
- Свяжитесь со мной на connectedIn: https://www.linkedin.com/kanikajindal02
- Улыбка
Спасибо.
До встречи.