Как повторно инициализировать слой в Керасе, но не веса - PullRequest
0 голосов
/ 30 марта 2020

Я хочу скопировать некоторые слои данной модели в другую новую модель (со всеми их атрибутами, такими как stride, padding et c.). Я хочу сохранить веса и атрибуты, но не свойство inbound_node / outbound_node, связанное со старой моделью.

1 Ответ

0 голосов
/ 30 марта 2020

Я не думаю, что в Keras есть какая-либо функция для этого, но это очень просто с помощью метода get_config, get_weights() и set_weights() слоев Keras.

    new_fresh_layer = layer.__class__(**layer.get_config())
    old_layer_weights = layer.get_weights()
    x = new_fresh_layer(layer_inputs)
    new_fresh_layer.set_weights(old_layer_weights)

, если также работает при последовательном добавлении слоев к модели:

    model1 = Sequential()
    old_layer =  Dense(10, input_shape=(10,))
    model1.add(old_layer)

    model2 = Sequential()
    new_layer = old_layer.__class__(**old_layer.get_config())
    model2.add(new_layer)
    new_layer.set_weights(old_layer.get_weights())

    assert (new_layer.get_weights()[0] == old_layer.get_weights()[0]).all()
    assert (new_layer.get_weights()[1] == old_layer.get_weights()[1]).all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...