Шаг 181.
Глубокое обучение на Python. Работа с Keras: глубокое погружение. Разные способы создания моделей Keras. Функциональный API. Простой пример

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

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


Пример 7.8. Создание простой модели с двумя слоями Dense с помощью функционального API
from tensorflow import keras
from tensorflow.keras import layers

inputs = keras.Input(shape=(3,), name="my_input")
features = layers.Dense(64, activation="relu")(inputs)
outputs = layers.Dense(10, activation="softmax")(features)
model = keras.Model(inputs=inputs, outputs=outputs)

    Рассмотрим этот процесс шаг за шагом.

    Сначала объявляется форма входных данных в виде экземпляра класса Input (обратите внимание, что этим объектам, как и любым другим, тоже можно присваивать имена):

inputs = keras.Input(shape=(3,), name="my_input")

    Объект input хранит информацию о форме и типе данных, которые будет обрабатывать модель:


# Модель будет обрабатывать пакеты, в которых каждый образец 
# имеет форму (3,). Количество образцов в пакете может меняться 
# (о чем говорит значение None, определяющее размер пакета)
print(inputs.shape)
# Данные в пакетах имеют тип float32
print(inputs.dtype)

(None, 3)
float32

    Такие объекты называются символическими тензорами. Они не содержат никаких действительных данных, но определяют параметры фактических тензоров, которые модель будет получать на входе. То есть они представляют будущие тензоры данных.

    Затем создается слой и при создании ему передается информация о входных данных:

features = layers.Dense(64, activation="relu")(inputs)

    Любым слоям Keras могут передаваться тензоры с реальными данными или такие вот символические тензоры. В последнем случае они возвращают новый символический тензор с информацией о форме и типе выходных данных:


print(features.shape)

(None, 64)

    После получения информации о выходных данных последнего слоя создается экземпляр модели; при этом конструктору модели передаются сведения о входах и выходах.

outputs = layers.Dense(10, activation="softmax")(features)
model = keras.Model(inputs=inputs, outputs=outputs)

    Вот сводная информация о получившейся модели:


model.summary()

Model: "functional"
 Layer (type)                          Output Shape                         Param # 
 my_input (InputLayer)                 (None, 3)                                  0 
 dense (Dense)                         (None, 64)                               256 
 dense_1 (Dense)                       (None, 10)                               650 

 Total params: 906 (3.54 KB)
 Trainable params: 906 (3.54 KB)
 Non-trainable params: 0 (0.00 B)
Блокнот с этим примером можно взять здесь.

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




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