我的问题是关于Lambda层的。据我了解,使用lambda图层时无法容纳权重/可训练参数。但是在this example中,Lambda层仍具有可训练的参数(约55k)。这怎么在这里工作?
答案 0 :(得分:0)
Lamdba图层只是一个包装。它包装任何表达式,以便可以用作图层。这种包装不会导致(可训练的)参数。例如,如果您要对输入执行计算(例如按因子进行缩放或减去均值等),则可以将其描述为一个函数,将其包装在Lambda层中就可以了。包装不需要额外的参数。
但是,这样的表达式也可以通过其他keras层传递您的输入。如果像这样包装整个图层,则包装的图层本身可以具有参数,并且在包装时仍具有参数。
请注意,您的示例中的包装似乎已完成,以包含非keras的tf代码。一种替代方法是创建一个新的tf.keras.layers.Layer
子类,并在实现其call
方法和/或仅使用功能模型API时进行特定于tf的操作。