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
)
只是您常用的全連接 NN 層。
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
權重矩陣的約束函數。輸入形狀
具有形狀的 N 維張量:(batch_size, ..., input_dim)
。最常見的情況是具有形狀 (batch_size, input_dim)
的二維輸入。
輸出形狀
具有形狀的 N 維張量:(batch_size, ..., units)
。例如,對於形狀為 (batch_size, input_dim)
的二維輸入,輸出將具有形狀 (batch_size, units)
。