1 前言
tf.keras提供了许多方便调用的API构建深度学习模型,但有些情况需要自定义层和模型,因此在这篇文章里,我们将着眼自定义模型,使用TensorFlow 2.X里的自定义方法为解决方案提供更多灵活性。
2 自定义层
2.1 创建没有权重的层
当自定义层无需权重时,使用tf.keras.layers.Lambda
会非常方便,示例如下:
exponential_layer = keras.layers.Lambda(lambda x: tf.exp(x))
然后这个自定义层可以像其他层一样在Sequential API和Functional API中使用以构建模型。甚至可以像调用Python函数一样调用它:
print(exponential_layer(2.0).numpy())
输出为:
7.389056
2.2 创建具有权重的层
如需创建具有权重的层,通常是继承tf.keras.layers.Layer
类,并重写__init__
、build
和call
三个方法,示例如下:
class Linear(keras.layers.Layer):
def __init__(self, units=32):
super(Linear, self).__init__()
self.units = units
def