Шаг 182.
Глубокое обучение на Python. ... . Разные способы создания моделей Keras. Функциональный API. Модели с несколькими входами и выходами

    На этом шаге мы рассмотрим построение такой модели.

    В отличие от этой простой модели большинство моделей глубокого обучения не похожи на списки и скорее напоминают графы. Например, они могут иметь несколько входов или несколько выходов. Именно благодаря таким моделям функциональный API предстает во всем блеске.

    Представьте, что вы создаете систему для ранжирования заявок в службу поддержки клиентов по важности и для распределения между соответствующими отделами. Ваша модель имеет три входа:

    Входные текстовые данные можно закодировать в виде массивов нулей и единиц с размерами vocabulary_size (мы рассмотрим методы кодирования текста позже).

    Модель также имеет два выхода:

    С помощью функционального API данную модель можно построить несколькими строками кода


Пример 7.9. Создание модели с несколькими входами и выходами с помощью функционального API
from tensorflow import keras
from tensorflow.keras import layers

vocabulary_size = 10000
num_tags = 100
num_departments = 4

title = keras.Input(shape=(vocabulary_size,), name="title")

# Определение входов модели
text_body = keras.Input(shape=(vocabulary_size,), name="text_body")
tags = keras.Input(shape=(num_tags,), name="tags")

# Объединение входных признаков в один тензор features
features = layers.Concatenate()([title, text_body, tags])
# Добавление промежуточного слоя для рекомбинации
# входных признаков в более богатые представления
features = layers.Dense(64, activation="relu")(features)
# Определение выходов модели
priority = layers.Dense(1, activation="sigmoid", name="priority")(features)
department = layers.Dense(
    num_departments, activation="softmax", name="department")(features)

# Создание модели с передачей ей
# информации о входах и выходах
model = keras.Model(inputs=[title, text_body, tags],
                    outputs=[priority, department])

    Функциональный API - это простой, как конструктор лего, но очень гибкий способ определения произвольных графов слоев, подобных этому.

    На следующем шаге мы рассмотрим обучение модели с несколькими входами и выходами.




Предыдущий шаг Содержание Следующий шаг