tf.keras.layers.Lambda文档解释了如何在lambda层中定义函数。该文档提供了以下功能作为示例,
def antirectifier(x):
x -= K.mean(x, axis=1, keepdims=True)
x = K.l2_normalize(x, axis=1)
pos = K.relu(x)
neg = K.relu(-x)
return K.concatenate([pos, neg], axis=1)
model.add(Lambda(antirectifier))
但据此,tf.keras.backend
必须用于对输入张量对象进行操作。
有什么方法可以使用默认的python包和用户定义的函数来定义lambda函数的步骤。
如果可能的话,请提供一些例子。
如果您不使用import tensorflow
及其功能,则绝对没有问题。
代码是完美的,仅此而已。
只是import keras.backend as K
示例rounded = K.round(x)
这是 Keras 独立文档:https://keras.io/layers/core/#lambda
不需要这样使用tf.keras.backend
。你给keras.layers.Lambda((的函数可以用输入张量做任何你想做的事情。
但是,大多数"默认python包"根本无法使用Tensor对象(例如,正如您在评论中指出的那样,round(x)
不适用于它(。
您可以在张量x
上使用大多数 Python 语言结构(例如x*2
或x+y
等( - 张量对象实现这些。同样,您可以调用一些"常规"python库,只要它们仅使用张量支持的操作即可。对于其他所有内容,您将需要使用张量对象的方法或适当的 Keras 库函数 - 或者编写自己的函数。