НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Штучний інтелект. Уроки для початківців

En

TensorFlow Моделі


TesorFlow.js

Бібліотека JavaScript для

навчання та розгортання
моделей машинного навчання
у веб-браузері

Tensorflow модель

Tensorflow Моделі

Моделі та Шари є важливими будівельними блоками в машинному навчанні.

Для різних завдань машинного навчання ви повинні поєднати різні типи шарів у модель, яку можна навчити за допомогою даних для прогнозування майбутніх значень.

TensorFlow.js підтримує різні типи моделей і різні типи шарів.

Модель TensorFlow — це нейронна мережа з одним або кількома шарами.


Проект Tensorflow

Проект Tensorflow має такий типовий робочий процес:

  • Збір даних
  • Створення моделі
  • Додавання шарів до моделі
  • Компіляція моделі
  • Навчання моделі
  • Використання моделі

Приклад

Припустімо, що ви знаєте функцію, яка визначає пряму лінію:

Y = 1.2X + 5

Тоді ви можете обчислити будь-яке значення y за допомогою формули JavaScript:

y = 1.2 * x + 5;

Щоб продемонструвати Tensorflow.js, ми могли б навчити модель Tensorflow.js прогнозувати значення Y на основі вхідних даних X.

Модель TensorFlow не знає функції.

// Створення навчальних даних
const xs = tf.tensor([0, 1, 2, 3, 4]);
const ys = xs.mul(1.2).add(5);

// Визначте модель лінійної регресії
const model = tf.sequential();
model.add(tf.layers.dense({units:1, inputShape:[1]}));

// Вкажіть Loss і Optimizer
model.compile({loss:'meanSquaredError', optimizer:'sgd'});

// Тренувати модель
model.fit(xs, ys, {epochs:500}).then(() => {myFunction()});

// Використовувати модель
function myFunction() {
  const xArr = [];
  const yArr = [];
  for (let x = 0; x <= 10; x++) {
    xArr.push(x);
    let result = model.predict(tf.tensor([Number(x)]));
    result.data().then(y => {
      yArr.push(Number(y));
      if (x == 10) {plot(xArr, yArr)};
    });
  }
}

Спробуйте самі »

Приклад пояснюється нижче:


Збір даних

Створіть тензор (xs) зі значеннями 5 x:

const xs = tf.tensor([0, 1, 2, 3, 4]);

Створіть тензор (ys) із 5 правильними відповідями y (помножте xs на 1,2 і додайте 5):

const ys = xs.mul(1.2).add(5);

Створення моделі

Створіть послідовний режим:

const model = tf.sequential();

У послідовній моделі вихід з одного шару є входом для наступного шару.


Додавання шарів

Додайте один щільний шар до моделі.

Шар складається лише з однієї одиниці (тензор), а форма — 1 (одновимірна):

model.add(tf.layers.dense({units:1, inputShape:[1]}));

У щільному шарі кожен вузол з’єднаний з кожним вузлом попереднього шару.


Складання моделі

Скомпілюйте модель, використовуючи meanSquaredError як функцію втрати та sgd (стохастичний градієнтний спуск) як функцію оптимізатора:

model.compile({loss:'meanSquaredError', optimizer:'sgd'});

Оптимізатори Tensorflow

  • Adadelta – реалізує алгоритм Adadelta.
  • Adagrad – реалізує алгоритм Adagrad.
  • Adam – реалізує алгоритм Адама.
  • Adamax – реалізує алгоритм Adamax.
  • Ftrl – реалізує алгоритм FTRL.
  • Nadam – реалізує алгоритм NAdam.
  • Optimizer – базовий клас для оптимізаторів Keras.
  • RMSprop – реалізує алгоритм RMSprop.
  • SGD – оптимізатор стохастичного градієнтного спуску.

Навчання моделі

Навчіть модель (за допомогою xs та ys) із 500 повторами (епохи):

model.fit(xs, ys, {epochs:500}).then(() => {myFunction()});

Використання моделі

Після навчання моделі ви можете використовувати її для різних цілей.

У цьому прикладі передбачено 10 значень y за 10 значень x та викликається функція для побудови прогнозів на графіку:

function myFunction() {
  const xArr = [];
  const yArr = [];
  for (let x = 0; x <= 10; x++) {
    let result = model.predict(tf.tensor([Number(x)]));
    result.data().then(y => {
      xArr.push(x);
      yArr.push(Number(y));
      if (x == 10) {display(xArr, yArr)};
    });
  }
}

Спробуйте самі »

У цьому прикладі передбачено 10 значень y за 10 значень x та викликається функція для відображення значень:

function myFunction() {
  const xArr = [];
  const yArr = [];
  for (let x = 0; x <= 10; x++) {
    let result = model.predict(tf.tensor([Number(x)]));
    result.data().then(y => {
      xArr.push(x);
      yArr.push(Number(y));
      if (x == 10) {display(xArr, yArr)};
    });
  }
}

Спробуйте самі »