Dense
类tf_keras.layers.Dense(
units,
activation=None,
use_bias=True,
kernel_initializer="glorot_uniform",
bias_initializer="zeros",
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
**kwargs
)
即一个常规的全连接神经网络层。
Dense
层执行以下操作: output = activation(dot(input, kernel) + bias)
,其中 activation
是作为 activation
参数传入的逐元素激活函数,kernel
是由该层创建的权重矩阵,bias
是由该层创建的偏置向量(仅当 use_bias
为 True
时适用)。这些都是 Dense
的属性。
注意:如果该层的输入张量的秩大于 2,则 Dense
层会沿着 inputs
的最后一个轴和 kernel
的轴 0 计算 inputs
和 kernel
的点积(使用 tf.tensordot
)。例如,如果输入维度为 (batch_size, d0, d1)
,则我们会创建一个形状为 (d1, units)
的 kernel
,并且 kernel
将沿着 input
的轴 2 对每个形状为 (1, 1, d1)
的子张量进行操作(共有 batch_size * d0
个这样的子张量)。在这种情况下,输出的形状将为 (batch_size, d0, units)
。
此外,层属性在层被调用一次后无法修改(trainable
属性除外)。当传入常用的关键字参数 input_shape
时,Keras 将创建一个输入层并插入到当前层之前。这等同于显式定义一个 InputLayer
。
示例
>>> # Create a `Sequential` model and add a Dense layer as the first layer.
>>> model = tf.keras.models.Sequential()
>>> model.add(tf.keras.Input(shape=(16,)))
>>> model.add(tf.keras.layers.Dense(32, activation='relu'))
>>> # Now the model will take as input arrays of shape (None, 16)
>>> # and output arrays of shape (None, 32).
>>> # Note that after the first layer, you don't need to specify
>>> # the size of the input anymore:
>>> model.add(tf.keras.layers.Dense(32))
>>> model.output_shape
(None, 32)
参数
a(x) = x
)。kernel
权重矩阵的初始化器。kernel
权重矩阵的正则化函数。kernel
权重矩阵的约束函数。输入形状
形状为 (batch_size, ..., input_dim)
的 N 维张量。最常见的情况是形状为 (batch_size, input_dim)
的 2D 输入。
输出形状
形状为 (batch_size, ..., units)
的 N 维张量。例如,对于形状为 (batch_size, input_dim)
的 2D 输入,输出形状将为 (batch_size, units)
。