30 марта в Шицзиншане, штат Калифорния, США открылся саммит разработчиков Google TenosrFlow 2018. Пользователи машинного обучения со всего мира выступили с техническими речами и демонстрировали TensorFlow. На прошлогодней конференции разработчиков TensorFlow фреймворк был официально обновлен до версии 1.0 и постепенно стал самым популярным фреймворком глубокого обучения. В этом году TensorFlow выпустила TensorFlow.js, новую среду машинного обучения для разработчиков JavaScript.
В основном выступлении утром на конференции Джефф Дин, глава Google Brain, Раджат Монга, директор TensorFlow, и другие представили TensorFlow с точки зрения производительности и популярности.
Согласно сообщениям, за последние два года TensorFlow постоянно обновлялся и улучшался, и постепенно он стал самой популярной средой глубокого обучения в сообществе. На следующем рисунке показано крупное обновление TensorFlow с момента открытия исходного кода, такого как TensorBoard, tfdata, tfkeras, Eager Execution и т. д.
И согласно статистике, за два года у TensorFlow было 11 миллионов загрузок, более 30 000 коммитов, более 6 900 пулл-реквестов и более 1400 участников.
В этом году Google также сделал несколько важных объявлений о TensorFlow:
1. Опубликовать новый официальный блог TensorFlow (blog.tensorflow.org/) и YouTube-канал TensorFlow;
2. TensorFlow.js, новая среда машинного обучения для разработчиков JavaScript;
3. Выпустить ряд новых библиотек и инструментов: таких как TensorFlowHub, TensorFlow Probability API, Nucleus, DeepVariant и т. д.
Из нескольких крупных анонсов сегодня наиболее интересным является TensorFlow.js, новая среда машинного обучения для разработчиков JavaScript. Далее сердце машины дает подробное введение в TensorFlow.js:
В программной речи конференции команда TensorFlow заявила, что веб-библиотека JavaScript TensorFlow.js теперь может обучать и развертывать модели машинного обучения. Мы можем строить модели, используя иерархический API нейронной сети, и создавать сложные приложения для визуализации данных, используя WebGL в браузере. Кроме того, скоро будет выпущен Node.js, который может обеспечить быстрое обучение и методы логического вывода для моделей веб-сайтов, таких как GPU и TPU.
В TensorFlow.js мы можем разрабатывать модели в браузере, используя библиотеку линейной алгебры JavaScript самого низкого уровня или API самого высокого уровня, а также можем запускать обученные модели в браузере. Таким образом, он может в полной мере использовать вычислительные ресурсы браузеров и компьютеров для реализации многих приложений машинного обучения. Например, обучение модели в Интернете распознаванию изображений или речи, обучение модели новым способам игры в игры или создание нейронной сети, которая может создавать фортепианную музыку, и т. д. Эти новые модели снабжены кодом реализации в TensorFlow.js в качестве примеров, и читатели также могут следовать этому руководству, чтобы реализовать модели на основе браузера.
Домашняя страница проекта TensorFlow.js:js.tensorflow.org/
Основные концепции TensorFlow.js
TensorFlow.js — это библиотека JavaScript с открытым исходным кодом, ускоренная с помощью WebGL, для разработки проектов машинного обучения. TensorFlow.js предоставляет вам высокопроизводительные и простые в использовании стандартные блоки машинного обучения, которые позволяют обучать модели в браузере или запускать предварительно обученные модели в режиме логического вывода. TensorFlow.js может предоставлять не только низкоуровневые строительные блоки машинного обучения, но и высокоуровневые API-интерфейсы, подобные Keras, для построения нейронных сетей.
Установка TensorFlow.js очень проста, мы можем напрямую использовать NMP или скрипт для завершения сборки. Есть также много документов и руководств по ее использованию.Нам нужно только освоить некоторые основные основные концепции, чтобы быстро начать работу с этой библиотекой JS. Далее мы представим некоторые основные концепции этой библиотеки.
Tensor
Центральной единицей данных в TensorFlow.js является тензор: одномерный или многомерный массив. Свойство shape экземпляра Tensor определяет форму его массива (то есть, сколько значений находится в каждом измерении массива).
Основным конструктором Tensor является функция tf.tensor:
// 2x3 Tensor
const shape = [2, 3]; // 2 rows, 3 columns
const a = tf.tensor([1.0, 2.0, 3.0, 10.0, 20.0, 30.0], shape);
a.print(); // print Tensor values
// Output: [[1 , 2 , 3 ],
// [10, 20, 30]]
// The shape can also be inferred:
const b = tf.tensor([[1.0, 2.0, 3.0], [10.0, 20.0, 30.0]]);
b.print();
// Output: [[1 , 2 , 3 ],
// [10, 20, 30]]
Variable
Переменная инициализируется значением тензора. Однако, в отличие от Тензоров, их значения изменяемы. Вы можете назначить новый тензор существующей переменной с помощью метода assign:
const initialValues = tf.zeros([5]);
const biases = tf.variable(initialValues); // initialize biases
biases.print(); // output: [0, 0, 0, 0, 0]
const updatedValues = tf.tensor1d([0, 1, 0, 1, 0]);
biases.assign(updatedValues); // update values of biases
biases.print(); // output: [0, 1, 0, 1, 0]
Переменная в основном используется для сохранения и обновления значений во время обучения модели.
Operations (Ops)
Тензор можно использовать для сохранения данных, а операцию (Op) можно использовать для управления данными. TensorFlow.js предоставляет множество операций для операций линейной алгебры и машинного обучения с тензорами. Поскольку тензоры неизменяемы, эти операции не меняют своих значений, а возвращают новые тензоры. Эти операции включают не только бинарные операции, такие как add, sub и mul, но и унарные операции, такие как квадрат:
const e = tf.tensor2d([[1.0, 2.0], [3.0, 4.0]]);
const f = tf.tensor2d([[5.0, 6.0], [7.0, 8.0]]);
const e_plus_f = e.add(f);
e_plus_f.print();
// Output: [[6 , 8 ],
// [10, 12]]
const d = tf.tensor2d([[1.0, 2.0], [3.0, 4.0]]);
const d_squared = d.square();
d_squared.print();
// Output: [[1, 4 ],
// [9, 16]]
Модели и слои
Концептуально модель представляет собой функцию, которая при заданных входных данных дает желаемый результат.
Есть два способа создать модель в Tensorflow.js: напрямую использовать Op для представления работы модели. Или используйте высокоуровневый API tf.model для создания моделей, определенных в слоях, что является распространенной формой абстракции в глубоком обучении. На самом деле, в дополнение к вышеперечисленным функциям, Tensorflow.js также имеет несколько очень важных основных концепций, таких как управление памятью, основные операции нейронной сети и процессы обучения. Но если мы понимаем приведенные выше концепции, мы можем легко построить простую модель машинного обучения в браузере.Ниже показан метод определения простой линейной регрессии:
import * as tf from '@tensorflow/tfjs';
// Define a model for linear regression.
const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [1]}));
// Prepare the model for training: Specify the loss and the optimizer.
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
// Generate some synthetic data for training.
const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);
// Train the model using the data.
model.fit(xs, ys).then(() => {
// Use the model to do inference on a data point the model hasn't seen before:
model.predict(tf.tensor2d([5], [1, 1])).print();
});
В настоящее время этот проект все еще является очень новым приложением, для нас очень легко развернуть модель машинного обучения на веб-странице и реализовать простой вывод в браузере и оборудовании пользователя. Хотя мы до сих пор не знаем эффекта реализации, эта JS-библиотека действительно может обучать и развертывать модели машинного обучения, поэтому сердце машины будет продолжать уделять внимание и пытаться создавать интересные приложения.