层是 Keras 中神经网络的基本构建块。层由一个张量输入张量输出的计算函数(层的 call 方法)和一些状态组成,这些状态保存在 TensorFlow 变量中(层的权重)。
Layer 实例就像一个函数一样可以被调用
import keras
from keras import layers
layer = layers.Dense(32, activation='relu')
inputs = keras.random.uniform(shape=(10, 20))
outputs = layer(inputs)
然而,与函数不同的是,层会维护一个状态,该状态在层在训练期间接收数据时更新,并存储在 layer.weights 中
>>> layer.weights
[<KerasVariable shape=(20, 32), dtype=float32, path=dense/kernel>,
<KerasVariable shape=(32,), dtype=float32, path=dense/bias>]
虽然 Keras 提供了广泛的内置层,但它们并不适用于所有用例。创建自定义层非常普遍,而且非常容易。
有关详尽的概述,请参阅指南 通过子类化创建新层和模型,并参考 基础 Layer 类 的文档。