Какова цель пользовательских объектов Keras при создании пользовательских слоев? - PullRequest
2 голосов
/ 26 июня 2019

Глядя на реализации слоев сторонних производителей, например tensorflow_addons, я вижу, что каждый слой регистрируется как пользовательский объект. Например, вы можете увидеть использование оболочки register_custom_keras_object call здесь .

Эта оболочка использует функцию tf.keras.utils.get_custom_objects() для регистрации.

Мой вопрос, почему это должно быть сделано для любых пользовательских слоев? В чем преимущество регистрации слоя как пользовательского объекта?

1 Ответ

1 голос
/ 26 июня 2019

Это позволяет вам затем ссылаться на ваш пользовательский объект через строку .Вы видите это с объектами по умолчанию в keras.Например:

# You can either compile a model with the Adam optimizer like this
model.compile(optimizer='adam', ...)

# or like this
adam = keras.optimizers.Adam()
model.compile(optimizer=adam, ...)

Взятый из определения custom_object_scope:

Код в операторе with сможет получить доступ к пользовательским объектампо имени.Изменения глобальных пользовательских объектов сохраняются в прилагаемой инструкции with.В конце оператора with глобальные пользовательские объекты возвращаются в состояние в начале оператора with.

Пример: рассмотрим пользовательский объект MyObject

with custom_object_scope({'MyObject':MyObject}):
    layer = Dense(..., kernel_regularizer='MyObject')
    # save, load, etc. will recognize custom object by name

Определеноas

def custom_object_scope(*args)

Аргументы:

*args: список переменной длины словарей имен, пар классов, добавляемых в пользовательские объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...