我可以编写具有不可训练/固定权重的Keras Lambda图层吗?

时间:2019-06-13 13:25:37

标签: python keras deep-learning keras-layer tf.keras

https://keras.io/layers/writing-your-own-keras-layers/

据此,无状态客户操作可以包装到Lambda层。但是,如果有可训练的变量,我们需要实现自己的层。 我想问问能否将Lambda层用于固定权重(即预先训练的权重)?

如果是,如何确保权重正确加载而不是随机初始化?由于get_weights()不会为您提供Lambda图层中的权重。

非常感谢。

2 个答案:

答案 0 :(得分:1)

不,Lambda层在Keras一侧没有任何权重,您可以在lambda函数中放置一些权重,但是这些权重无法使用Keras加载,并且对于Keras完全不可见。

因此,如果要使用预先训练的权重,则必须实现自己的图层,因此Keras知道这些权重,可以使用load_weights进行加载。

答案 1 :(得分:0)

让我们假设您对卷积层感兴趣。我认为这对于model.add(Lambda(lambda x: K.conv2d(x, kernels))是可行的,其中kernels是具有权重的numpy矩阵,而K是后端。