Introducción a la API funcional de Keras

参考 文献 : Géron, Aurélien. Aprendizaje automático práctico con Scikit-Learn, Keras y TensorFlow: conceptos, herramientas y técnicas para construir sistemas inteligentes. O'Reilly Media, 2019.

El modelo de secuencia secuencial de Keras puede construir rápidamente una red neuronal simple, y Keras también proporciona una API funcional (API funcional) para personalizar varios tipos de estructuras de cuadrícula.

Concatenar

Al construir la red neuronal Wide & Deep, se requiere concatenación de capa. La capa de fusión en la figura agrega la capa de entrada y la última capa de la capa oculta juntas.

input_ = keras.layers.Input(shape=X_train.shape[1:])
hidden1 = keras.layers.Dense(30, activation="relu")(input_)
hidden2 = keras.layers.Dense(30, activation="relu")(hidden1)
concat = keras.layers.concatenate([input_, hidden2])
output = keras.layers.Dense(1)(concat)
model = keras.models.Model(inputs=[input_], outputs=[output])

Entradas múltiples

Las características de entrada se pueden dividir en múltiples grupos (puede haber partes superpuestas) y dejarlas pasar a través de diferentes rutas en la red neuronal.

input_A = keras.layers.Input(shape=[5], name="wide_input")
input_B = keras.layers.Input(shape=[6], name="deep_input")
hidden1 = keras.layers.Dense(30, activation="relu")(input_B)
hidden2 = keras.layers.Dense(30, activation="relu")(hidden1)
concat = keras.layers.concatenate([input_A, hidden2])
output = keras.layers.Dense(1, name="output")(concat)
model = keras.models.Model(inputs=[input_A, input_B], outputs=[output])

Salidas múltiples

input_A = keras.layers.Input(shape=[5], name="wide_input")
input_B = keras.layers.Input(shape=[6], name="deep_input")
hidden1 = keras.layers.Dense(30, activation="relu")(input_B)
hidden2 = keras.layers.Dense(30, activation="relu")(hidden1)
concat = keras.layers.concatenate([input_A, hidden2])
output = keras.layers.Dense(1, name="main_output")(concat)
aux_output = keras.layers.Dense(1, name="aux_output")(hidden2)
model = keras.models.Model(inputs=[input_A, input_B],
                           outputs=[output, aux_output])

Cada salida puede configurar la función de pérdida por separado

model.compile(loss=[“mse”,”mse”], loss_weights=[0.9, 0.1], optimizer=“sgd”)

Si no se configura, Keras usa la misma función de pérdida de forma predeterminada. Durante el entrenamiento, Keras calculará dos funciones de pérdida por separado y las sumará para obtener el valor de pérdida final.

Supongo que te gusta

Origin www.cnblogs.com/yaos/p/12739939.html
Recomendado
Clasificación