首页 > 解决方案 > LAmbda 层可以有可训练的参数吗?

问题描述

我的问题是关于 Lambda 层的。据我了解,当使用 lambda 层时,它不能保存权重/可训练参数。但是在这个例子中,Lambda 层仍然有可训练的参数(大约 55k)。这怎么会在这里工作?

标签: tensorflowkerastf.keras

解决方案


一个 lamdba 层只是一个包装器。它包装任何表达式,以便它可以用作图层。这种包装不会导致(可训练的)参数。例如,如果你想对你的输入进行计算(比如按一个因子缩放或减去平均值等),你将它描述为一个函数,将它包装在一个 Lambda 层中,就是这样。包装不需要额外的参数。

但是,这样的表达式也可以通过其他 keras 层传递您的输入。如果你像这样包裹整个层,那么被包裹的层本身就可以有参数,并且在它们被包裹时仍然有。

请注意,您的示例中的包装似乎是为了包含非 keras tf 代码。另一种方法是在实现其方法和/或仅使用功能模型 API时创建一个新的子类tf.keras.layers.Layer并制作特定于 tf 的东西。call


推荐阅读