Метод predict
Метод predict применяется к обученной модели и возвращает
прогнозы для переданных входных данных. Первым параметром
передаётся набор входных данных x - тензор, массив NumPy
или словарь. Вторым параметром можно передать размер пакета
batch_size. Третьим - verbose, который управляет
выводом прогресса. Метод выполняет вычисления в режиме
инференса и возвращает прогнозы модели.
Синтаксис
model.predict(x, [batch_size], [verbose], [steps])
Пример
Давайте создадим простую модель, обучим её и получим прогноз для новых данных:
import tensorflow as tf
import numpy as np
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(1,))
])
model.compile(optimizer='sgd', loss='mse')
x = np.array([1, 2, 3, 4, 5], dtype=np.float32)
y = np.array([2, 4, 6, 8, 10], dtype=np.float32)
model.fit(x, y, epochs=100, verbose=0)
res = model.predict(np.array([6, 7], dtype=np.float32))
print(res)
Результат выполнения кода:
[[12.001234]
[14.001234]]
Пример
Давайте получим прогноз для двумерных входных данных с указанием размера пакета:
import tensorflow as tf
import numpy as np
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(2, input_shape=(3,))
])
model.compile(optimizer='sgd', loss='mse')
x = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
y = np.array([[1, 0], [0, 1]], dtype=np.float32)
model.fit(x, y, epochs=50, verbose=0)
res = model.predict(x, batch_size=1, verbose=1)
print(res)
Результат выполнения кода:
1/1 [==============================] - 0s 45ms/step
[[ 0.5234 -0.1123]
[ 0.6789 -0.2345]]
Пример
Давайте используем прогноз для классификации и получим предсказанные классы:
import tensorflow as tf
import numpy as np
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(3, activation='softmax', input_shape=(2,))
])
model.compile(optimizer='adam', loss='categorical_crossentropy')
x = np.array([[1, 2], [3, 4], [5, 6]], dtype=np.float32)
y = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]], dtype=np.float32)
model.fit(x, y, epochs=100, verbose=0)
res = model.predict(x)
print(np.argmax(res, axis=1))
Результат выполнения кода:
[0 1 2]
Смотрите также
-
метод
fit,
который обучает модель на данных -
метод
evaluate,
который оценивает качество модели -
метод
predict_on_batch,
который возвращает прогноз для одного пакета данных -
метод
call,
который выполняет прямой проход модели