我有一个简单的 Keras 网络,它使用定义为 lambda 的自定义激活函数:
from tensorflow.keras.activations import relu
lrelu = lambda x: relu( x, alpha=0.01 )
model = Sequential
model.add(Dense( 10, activation=lrelu, input_dim=12 ))
...
它可以很好地编译、训练、测试(省略代码),我可以使用model.save( 'model.h5' ). 但是,当我尝试使用加载它时loaded = tf.keras.models.load_model( 'model.h5', custom_objects={'lrelu' : lrelu}),尽管定义lrelu完全如上所示,但它会抱怨:
ValueError: Unknown activation function:<lambda>
等一下:不是lambdapython 关键字吗?我不打算重新定义 python 所以我可以加载一个模型——它会在哪里结束?我该如何克服这个问题?我需要指定什么作为我的custom_objects?
根据TF Keras guide to saving and loading with custom objects and functions ...
自定义函数(例如激活损失或初始化)不需要 get_config 方法。只要将其注册为自定义对象,函数名称就足以加载。
在我看来,这正是我所做的。难道这只适用于使用def而不适用于 lambda 函数定义的函数吗?
慕标5832272
HUWWW
相关分类