Из этой статьи вы узнаете, как начать работу с 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
  • Улыбка

Спасибо.

До встречи.