Атрибут outputs
Атрибут outputs класса Model возвращает список выходных тензоров модели.
Он доступен после того, как модель была построена, то есть после первого вызова
build, fit, predict или прямого вызова модели.
Атрибут не принимает параметров и доступен только для чтения.
Для моделей с одним выходом outputs содержит один тензор,
а для моделей с несколькими выходами - список из нескольких тензоров.
Синтаксис
model.outputs
Пример
Давайте создадим простую модель с одним входом и одним выходом
и посмотрим на атрибут outputs после построения модели:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Dense(3, input_shape=(2,)),
])
model.build()
print(model.outputs)
Результат выполнения кода:
[<KerasTensor shape=(None, 3), dtype=float32, sparse=False, name=keras_tensor>]
Пример
Давайте создадим модель с двумя выходами через функциональный API и получим список выходных тензоров:
import tensorflow as tf
tf.random.set_seed(0)
inputs = tf.keras.Input(shape=(4,))
x = tf.keras.layers.Dense(3, activation='relu')(inputs)
out1 = tf.keras.layers.Dense(1, name='out1')(x)
out2 = tf.keras.layers.Dense(1, name='out2')(x)
model = tf.keras.Model(inputs=inputs, outputs=[out1, out2])
print(len(model.outputs))
print(model.outputs[0].shape)
print(model.outputs[1].shape)
Результат выполнения кода:
2
(None, 1)
(None, 1)
Пример
Давайте построим модель, обучим ее на небольших данных
и убедимся, что атрибут outputs доступен после обучения:
import tensorflow as tf
import numpy as np
tf.random.set_seed(0)
x = np.array([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
y = np.array([[1.0], [2.0], [3.0]])
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=(2,)),
])
model.compile(optimizer='sgd', loss='mse')
model.fit(x, y, epochs=1, verbose=0)
print(model.outputs)
Результат выполнения кода:
[<KerasTensor shape=(None, 1), dtype=float32, sparse=False, name=keras_tensor_1>]