Оценка модели в TensorFlow
После подбора весов ошибку на
отдельной таблице считают методом
evaluate. Ему передают
те же столбцы, что при обучении:
признаки и эталонные ответы.
Возвращается одно число - значение
выбранной при компиляции ошибки.
Обучим модель на двух строках, затем проверим её на третьей паре, которую сеть ещё не видела:
import tensorflow as tf
import numpy as np
tf.keras.utils.set_random_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,)),
])
model.compile(
optimizer=tf.keras.optimizers.SGD(
learning_rate=0.1
),
loss="mse",
)
train_x = np.array(
[[1.0], [2.0]], dtype=np.float32
)
train_y = np.array(
[[3.0], [5.0]], dtype=np.float32
)
check_x = np.array([[3.0]], dtype=np.float32)
check_y = np.array([[7.0]], dtype=np.float32)
model.fit(train_x, train_y, epochs=2, verbose=0)
score = model.evaluate(check_x, check_y, verbose=0)
print(score)
# выведет 0.6174351572990417
Проверочную таблицу можно передать
тензорами. Параметр
verbose со значением ноль
убирает лишний текст и оставляет
только результат:
import tensorflow as tf
tf.keras.utils.set_random_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,)),
])
model.compile(optimizer="sgd", loss="mse")
train_x = tf.constant([[0.0], [1.0]])
train_y = tf.constant([[1.0], [3.0]])
check_x = tf.constant([[2.0]])
check_y = tf.constant([[5.0]])
model.fit(train_x, train_y, epochs=2, verbose=0)
score = model.evaluate(check_x, check_y, verbose=0)
print(score)
# выведет 22.062347412109375
Обучите модель с одним входом
на парах (0, 1) и (1, 3).
Посчитайте ошибку на паре
(2, 5) одним числом.
Подберите веса на таблице
из строк [2.0] и [4.0]
с ответами 5.0 и 9.0.
Выведите ошибку для строки
[6.0] с эталоном 13.0.
Задайте обучение на двух
строках [1.0, 0.0]
и [0.0, 1.0] с целями
1.0 и 2.0.
Проверьте качество на строке
[1.0, 1.0] с эталоном
3.0.