在 Keras 中,是否有文档描述初始化器、优化器等的字符串名称到类映射?

Dav*_*rks 6 keras tensorflow

是否有任何文档描述 Keras 中的哪些字符串名称映射到哪些对象?例如,下面我创建了一个嵌入层tf.keras.layers,我可以用它'uniform'来映射到该类tf.keras.initializers.RandomUniform

tf.keras.layers.Embedding(1000, 64, embeddings_initializer='uniform')
Run Code Online (Sandbox Code Playgroud)

但我只是通过查看该用法的示例才知道这一点。我认为受支持的字符串形式已在某处记录,但我似乎找不到此类文档,并且挖掘代码变得过于抽象而难以轻松理解。

版本:TF 1.13.1

y.s*_*hyk 8

TF 中的 keras 实现中没有可用的字符串常量列表(我想,在原始 keras 中也没有)。

对于初始化程序情况,'uniform'字符串将转换为配置,并在该配置上调用结构方法,并提示从初始化程序命名空间创建对象(可以在此处找到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')
Run Code Online (Sandbox Code Playgroud)

因此,我想不出比以下更好的方法,例如列出所有初始化程序:

import tensorflow as tf

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

输出虽然有额外的值,但类似于:

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
Run Code Online (Sandbox Code Playgroud)