РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pytfSpTrLp 39 of 89 menu
◀ ▶

Свой цикл обучения в TensorFlow

Обучение можно вести без метода fit: на каждой эпохе открывают ленту GradientTape, считают предсказание и ошибку, затем методом gradient получают производные по обучаемым весам и передают их оптимизатору через метод apply_gradients.

Соберём короткую модель с одним выходом, средний квадрат и спуск с фиксированным шагом. Три эпохи на трёх точках - и выведем ошибку после последнего шага:

import tensorflow as tf tf.keras.utils.set_random_seed(0) model = tf.keras.Sequential([ tf.keras.layers.Dense(1, input_shape=(1,)), ]) loss_fn = tf.keras.losses.MeanSquaredError() optimizer = tf.keras.optimizers.SGD( learning_rate=0.1 ) features = tf.constant([[1.0], [2.0], [3.0]]) targets = tf.constant([[2.0], [4.0], [6.0]]) for _ in range(3): with tf.GradientTape() as tape: preds = model(features, training=True) loss = loss_fn(targets, preds) grads = tape.gradient( loss, model.trainable_variables ) optimizer.apply_gradients( zip(grads, model.trainable_variables) ) print(loss) # выведет tf.Tensor(0.06944366544485092, shape=(), dtype=float32)

Тот же порядок шагов подходит и для явных переменных весов и смещения. Два прохода по двум парам «признак - ответ»:

import tensorflow as tf tf.keras.utils.set_random_seed(0) w = tf.Variable([[0.0]]) b = tf.Variable([0.0]) loss_fn = tf.keras.losses.MeanSquaredError() optimizer = tf.keras.optimizers.SGD( learning_rate=0.2 ) x = tf.constant([[1.0], [2.0]]) y = tf.constant([[3.0], [5.0]]) for _ in range(2): with tf.GradientTape() as tape: pred = x @ w + b loss = loss_fn(y, pred) grads = tape.gradient(loss, [w, b]) optimizer.apply_gradients(zip(grads, [w, b])) print(w, b) # выведет (<tf.Variable shape=(1, 1), dtype=float32, numpy=array([[1.64]], dtype=float32)>, <tf.Variable shape=(1,), dtype=float32, numpy=array([0.99999994], dtype=float32)>)

Подготовьте модель с одним выходом для одного признака. Проведите два полных прохода по строкам [1.0], [2.0] с ответами 2.0 и 4.0 своим циклом и выведите ошибку после второго прохода.

Задайте переменные веса и смещения для одного признака. Сделайте три шага спуска на парах (0, 1), (1, 3), (2, 5) и выведите итоговые коэффициенты.

Соберите таблицу из трёх признаков 1.0, 2.0, 3.0 и столбец целей 0.0, 1.0, 2.0. Обучите однослойную модель за четыре эпохи вручную и выведите прогноз для 4.0.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить