Есть ли в Keras документация, описывающая имя строки для сопоставления классов для инициализаторов, оптимизаторов и т. Д.? - PullRequest
1 голос
/ 16 мая 2019

Есть ли документация, описывающая, какие имена строк соответствуют каким объектам в Керасе? Например, ниже я создаю слой Embedding из tf.keras.layers и могу использовать 'uniform' для сопоставления с классом tf.keras.initializers.RandomUniform.

tf.keras.layers.Embedding(1000, 64, embeddings_initializer='uniform')

Но я знаю это только по примерам такого использования. Я предполагаю, что поддерживаемые строковые формы где-то задокументированы, но я не могу найти такую ​​документацию, и копание в коде стало слишком абстрактным, чтобы его можно было легко выполнять.

Версия: TF 1.13.1

1 Ответ

1 голос
/ 17 мая 2019

Нет списка строковых констант, доступных в реализации keras в TF (и, я полагаю, в оригинальных keras также нет).

Для случая initializer строка 'uniform' преобразуется в config, и в этой конфигурации вызывается метод фабрики с подсказкой для создания объекта из пространства имен инициализаторов (можно найти здесь как def deserialize_keras_object ):

config = {'class_name': str(identifier), 'config': {}}

deserialize_keras_object(
      config,
      module_objects=globals(),
      custom_objects=custom_objects,
      printable_module_name='initializer')

Поэтому я не могу придумать лучшего способа, например, перечислить все инициализаторы, чем:

import tensorflow as tf

for k, v in tf.keras.initializers.__dict__.items():
    if not k[0].isupper() and not k[0] == "_":
        print(k)

И вывод, хотя и с дополнительными значениями, выглядит так:

constant
glorot_normal
glorot_uniform
identity
ones
orthogonal
zeros
he_normal
he_uniform
lecun_normal
lecun_uniform
normal
random_normal
random_uniform
uniform
truncated_normal
deserialize
get
serialize
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...