【问题标题】:Can I write a Keras Lambda layer with non-trainable/fixed weights?我可以编写一个不可训练/固定权重的 Keras Lambda 层吗?
【发布时间】:2019-10-28 02:40:10
【问题描述】:

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

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

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

非常感谢。

【问题讨论】:

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


    【解决方案1】:

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

    所以如果你想使用预训练的权重,你必须实现自己的层,所以这些权重是 Keras 已知的,可以使用load_weights 加载。

    【讨论】:

    • 您好,感谢您的快速回复。想知道我是否可以在包装到 Lambda 层之前先将 tensorflow 检查点加载到 tensorflow 图?我试过这种方式,但似乎输出与 TF 不一样,这意味着权重没有加载或仍然随机初始化。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-01-16
      • 2019-09-06
      • 1970-01-01
      • 2017-12-20
      • 2017-07-07
      • 2017-10-07
      • 2021-09-30
      • 2019-11-24
      • 2021-02-11
      相关资源
      最近更新 更多