Я обучаю автоэнкодеру, построенному с использованием Sequential API в Keras.Я хотел бы создать отдельные модели, которые реализуют функции кодирования и декодирования.Из примеров я знаю, как это сделать с помощью функционального API, но я не могу найти пример того, как это делается с помощью последовательного API.Следующий пример кода - моя отправная точка:
input_dim = 2904
encoding_dim = 4
hidden_dim = 128
# instantiate model
autoencoder = Sequential()
# 1st hidden layer
autoencoder.add(Dense(hidden_dim, input_dim=input_dim, use_bias=False))
autoencoder.add(BatchNormalization())
autoencoder.add(Activation('elu'))
autoencoder.add(Dropout(0.5))
# encoding layer
autoencoder.add(Dense(encoding_dim, use_bias=False))
autoencoder.add(BatchNormalization())
autoencoder.add(Activation('elu'))
# autoencoder.add(Dropout(0.5))
# 2nd hidden layer
autoencoder.add(Dense(hidden_dim, use_bias=False))
autoencoder.add(BatchNormalization())
autoencoder.add(Activation('elu'))
autoencoder.add(Dropout(0.5))
# output layer
autoencoder.add(Dense(input_dim))
Я понимаю, что могу выбирать отдельные слои, используя autoencoder.layer[i]
, но я не знаю, как связать новую модель с диапазоном таких слоев.Я наивно пробовал следующее:
encoder = Sequential()
for i in range(0,7):
encoder.add(autoencoder.layers[i])
decoder = Sequential()
for i in range(7,12):
decoder.add(autoencoder.layers[i])
print(encoder.summary())
print(decoder.summary())
, который, казалось бы, работал для части кодера (было показано правильное резюме), но часть декодера выдавала ошибку:
This model has not yet been built. Build the model first by calling build() or calling fit() with some data. Or specify input_shape or batch_input_shape in the first layer for automatic build.