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

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

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

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

Версия: TF 1.13.1

Всего 1 ответ


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

Для случая инициализатора '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

Есть идеи?

10000