Как удалить слой из предварительно обученной модели TensorFlow? - PullRequest
0 голосов
/ 28 апреля 2020

Я обучил следующую модель с тремя скрытыми слоями в TensorFlow:

inputs = tf.keras.Input(shape=(timesteps, feature_size))

l = LSTM(units=state_size,
               return_sequences=True)(inputs)
l = LSTM(units=state_size,
               return_sequences=True)(l)
l = LSTM(units=state_size,
               return_sequences=True)(l)

output = TimeDistributed(Dense(output_size, activation='softmax'))(l)

model = tf.keras.Model(inputs=inputs, outputs=output)

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

output = model.layers[idx].Output

Но как мне теперь передать этот вывод на третий слой? Большое спасибо за любую помощь!

1 Ответ

0 голосов
/ 28 апреля 2020

Один из подходов заключается в использовании имен слоев для создания новой модели.

В приведенном ниже примере используются указанные имена. Вы также можете использовать имена по умолчанию, данные Keras.

inputs = tf.keras.Input(shape=(timesteps, feature_size))

l = LSTM(units=state_size, return_sequences=True, name="lstm1")(inputs)
l = LSTM(units=state_size, return_sequences=True, name="lstm2")(l)
l = LSTM(units=state_size, return_sequences=True, name="lstm3")(l)

output = TimeDistributed(Dense(output_size, activation='softmax'))(l)

model = tf.keras.Model(inputs=inputs, outputs=output)

# Now create the second model using specific layers from the first model
reuse_layers = ["lstm1", "lstm3"]

inputs = inputs = tf.keras.Input(shape=(timesteps, feature_size))
l = inputs
for layer_name in reuse_layers:
    l = model.get_layer(layer_name)(l)

output = TimeDistributed(Dense(output_size, activation='softmax'))(l)
new_model = Model(inputs=inputs, outputs=output)    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...